链接列表添加方法
本文关键字:方法 添加 列表 链接 | 更新日期: 2023-09-27 18:33:55
所以,我正在为链表创建一个添加方法,从头开始制作。我希望列表在列表中的任意位置添加项目(具有 int 值的节点)。这是我的代码:
public void Add(int val)
{
Node newNode = new Node();
newNode.value = val;
if (head == null)
{
head = newNode;
current = newNode;
}
if (current.Next == null)
{
current.Next = newNode;
current = newNode;
}
size++;
}
现在,当我尝试我的程序时,我注意到我只能在列表中添加线性值。我完全站在火车的错误一边吗?
例如:我的列表中有 3 个元素,1、7、9,我想将项目 2 添加到元素 1 之后的列表中?
怎么样
public void Add(int val)
{
Node newNode = new Node();
newNode.value = val;
if (head == null)
{
head = newNode;
current = newNode;
}
else
{
current.Next = newNode;
current = newNode;
}
size++;
}
public void Insert(int index, int val)
{
// COMPLETELY UNTESTED BUT MAY POINT YOU IN THE RIGHT DIRECTION
Node newNode = new Node();
newNode.value = val;
if (head == null) { return; }
Node node = new Node();
if (index == 0){
newNode.Next = head;
head = newNode;
}
node = head;
while(node.Head!=null && index > 1)
{
node = node.Next;
index--;
}
if (node != null && index >= 0){
var next = node.Next;
newNode.Next = next;
node.Next = newNode;
}
size++;
}
你要做的是从列表的头部开始,然后遍历它,直到你到达适当的位置,然后插入它。像这样:
public void Add(int val)
{
var newNode = new Node();
Node currentNode = head;
int index=0;
while (currentNode != null && index < val)
{
currentNode=currentNode.Next;
index++;
}
newNode.Next = currentNode.Next;
currentNode.Next = newNode;
// If its a doubly linked list, you might need to update .Prev too
}
这样做是遍历每个节点,并在我们这样做时增加索引计数器。当我们最终到达正确的位置时,我们将采用当前节点指向的节点,并让新节点指向它。然后我们将当前节点的 Next 属性指向我们的新节点,从而在当前节点之后"插入"我们的新节点。