我正在使用C#中的简单链接列表,我不知道如何在列表的末尾添加元素,colud任何人帮助?
namespace ConsoleApplication1
{
class Class1
{
public class Node()
{
public int Data;
public Node Next;
}
private Node FirstNode=null;
public void AddBefore(int number)
{
Node NewNode=new Node();
NewNode.Next=FirstNode;
NewNode.Data=number;
FirstNode=NewNode;
}
public void AddAfter(int number)
{
if (FirstNode==null)
{
AddBefore(number);
}
else
{
???????????????
}
}
}
}
答案 0 :(得分:2)
您需要遍历列表,直到找到最后一个节点,然后将其添加到最后。类似的东西:
public void AddAfter(int number)
{
if (FirstNode==null)
{
AddBefore(number);
}
else
{
// Finding the last node
Node currentNode = FirstNode;
while (currentNode.NextNode != null)
currentNode = currentNode.NextNode;
// Constructing a new node
Node newNode = new Node();
newNode.Data = number;
newNode.Next = null;
// Adding the new node to the end
currentNode.NextNode = newNode;
}
}
答案 1 :(得分:0)
else
{
Node NewNode=new Node();
NewNode.Data=number;
Node LastNode = GetLastNode();
LastNode.Next = NewNode;
}
你仍然需要实现GetLastNode,否则你不会练习任何东西= P
答案 2 :(得分:0)
这个问题有点令人困惑。您是在询问如何将节点放在列表的末尾,还是作为列表中的下一个项目。
我必须在当天回家做作业(虽然是java)。如果要始终将节点添加到列表的末尾,则还需要编辑列表类以包含列表的头部和尾部。这将允许您添加项目到结尾或开始。
如果要始终将节点添加到末尾,则可以尝试编辑代码,以便在向末尾添加节点时,上一个节点的下一个节点值将设置为尾部而不是null。这将始终允许您将项目添加到列表的末尾(除非指定位置,否则大多数添加方法都会执行此操作)
简而言之:
将Node tailNode = null;
添加到Class
并添加一个方法,该方法将获取并设置Node
类的下一个节点。完成后,编辑代码,使其看起来像这样:
class Class1
{
public class Node()
{
public int Data;
public Node Next;
//Class to set next node
public void setNext(Node nextNode)
{
//Set next node
Next = nextNode;
}
//Get next node
public Node getNext()
{
return Next;
}
}
private Node FirstNode=null;
private Node lastNode = null;
public void AddBefore(int number)
{
Node NewNode=new Node();
NewNode.Next=FirstNode;
NewNode.Data=number;
FirstNode=NewNode;
}
public void AddAfter(int number)
{
if (FirstNode==null)
{
AddBefore(number);
}
else
{
if(FirstNode.getNext() == null)
{
//No tail. Make this node tail
lastNode = new Node();
lastNode.Data = number;
//Set first node's next to last node
FirstNode.setNext(lastNode);
}else{ //TailNode already set
//New node to be tail
Node newLastNode = new Node();
newLastNode.Data = number;
//Set the current tail node to have this node as next
lastNode.setNext(newLastNode);
//Make new last node last node
lastNode = newLastNode;
}
}
}
}
代码可能有些偏差(我还没有真正测试过),但这是你将要做的主要情况。