用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是我最后的解决方案,请帮助我
我来帮你解决第一个问题:
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