在C#中的LinkedList中填写一些方法

时间:2015-09-06 12:54:26

标签: c#

你好,我有一个功课,我在互联网上搜索,我找不到任何解决方案,我需要一个帮助我做这个功课。 这是班级

public class LinkedList
{
    public Node head;
    public int size;

    public LinkedList()
    {
        head = null;
        size = 0;
    }

    public void Append(student d)
    {
        // FILL THIS METHOD
    }

    public Node Remove()
    {
        // FILL THIS METHOD
    }

    public Node Search(int key)
    {
        // FILL THIS METHOD
    }

    public Node SearchPrevious(int key)
    {
        // FILL THIS METHOD
    }

    public void Insert(student s, int previousKey)
    {
        // FILL THIS METHOD
    }

    public void Delete(int key)
    {
        // FILL THIS METHOD
    }

    public void PrintLinkedList()
    {
        // FILL THIS METHOD
    }

这是另外两个班级

public class Node
{
    public student data;
    public Node link;

    public Node()
    {
        data = null;
        link = null;
    }

    public Node(student s, Node p)
    {
        data = s;
        link = p;
    }

两个和班级

  public class student
{
    public int TNumber;
    public string Name;
    public string Advisor;
    public student(int t, string n, string a)
    {
        TNumber = t;
        Name = n;
        Advisor = a;
    }
}

我现在这是一个功课,但我发现stackoverflow是我的最后一个解决方案,请帮助我

1 个答案:

答案 0 :(得分:1)

我会帮你解决第一个问题:

public class LinkedList
{
    public Node head;
    public int size;

    public LinkedList()
    {
        head = null;
        size = 0;
    }

    public void Append(student d)
    {
        // FILL THIS METHOD
    }

首先让我说结构真的很奇怪 - 所有这些都是乱七八糟的(我想也许你的老师应该在这里考虑他/她的设计决定) - 但我想我们必须坚持下去。

由于你只有一个student d,你只能用它来创建一个新的节点,为此你需要它link这个值并不难 - 这是学生,但节点更难 - 你必须首先找到列表的末尾,所以让我们用一个简单的循环来做到这一点:

public class LinkedList
{
   // ...
   public Node FindTail ()
   {
       var tail = head;
       while (tail != null && tail.link != null)
           tail = tail.link;
       return tail;
   }

好 - 用这个附件并不难:

    public void Append(student d)
    {
        var oldTail = FindTail();
        var newTail = new Node(d, oldTail);
        if (oldTail == null)
           head = newTail;
        else
           oldTail.link = newTail;

        // oh wait there is something missing here
        // hint: I ignored the size ... you should do something
        // about it
    }

就是这样 - 这应该是正确的,你应该能够自己弄清楚其余部分。

不要忘记设置尺寸