你好,我有一个功课,我在互联网上搜索,我找不到任何解决方案,我需要一个帮助我做这个功课。 这是班级
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是我的最后一个解决方案,请帮助我
答案 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
}
就是这样 - 这应该是正确的,你应该能够自己弄清楚其余部分。
不要忘记设置尺寸