用c#填充LinkedList中的一些方法

本文关键字:方法 填充 LinkedList | 更新日期: 2023-09-27 18:11:37

你好,我有一个家庭作业,我搜索了所有的互联网,我找不到任何解决方案,请我需要有人来帮助我做这个家庭作业。这是类

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是我最后的解决方案,请帮助我

用c#填充LinkedList中的一些方法

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

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;
   }

good - with this Append不难:

    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
    }

就是这样-这应该是正确的,你应该能够自己找出剩下的。

别忘了设置size