我目前正在处理一个需要从用户输入的位置插入和删除数据的链表。但是,我在插入时遇到了一些错误。我遵循我在网上找到的代码,我不知道问题在哪里,我输入的数据没有插入到链表,每次我显示链表时,它显示我NULL,即使我确实在其中插入了一些数据。
下面是我的插入代码: public void addItemRequest(Node head, int item, int position)
{
Node prevNode = head;
Node newNode = new Node(item,null);
if (head==null)
{
return;
}
if (position == 0)
{
newNode.next = head;
return;
}
int count = 0;
while (count < position -1 && head.next != null)
{
head = head.next;
count++;
}
Node currNode = head.next;
head.next = newNode;
head = head.next;
head.next = currNode;
return;
}
下面是我的Node类代码:
class Node{
int num;
Node next;
Node()
{
num=0;
next=null;
}
Node(int num, Node next)
{
this.num=num;
this.next=next;
}
int getNum()
{
return num;
}
Node getNext()
{
return next;
}
void setNext(Node next)
{
this.next=next;
}
}
我希望有人能告诉我这里的问题是什么,谢谢。
你必须使head
作为一个全局变量,只有它会工作
只使用一个新的临时节点
public void addItemRequest(Node head, int item, int position)
{
Node prevNode = head;
Node newNode = new Node(item,null);
if (head==null)
{
head=newNode;
return;
}
if (position == 0)
{
newNode.next = head;
head = newNode;
return;
}
int count = 0;
while (count < position -1 && head.next != null)
{
prevNode = prevNode.next;
count++;
}
newNode.next = prevNode.next;
prevNode.next = newNode;
return;
}
检查现在。我已经改正了答案。head=newNode;
必须加入if (position == 0)
如果你真的想欣赏,接受答案并投票给它。这样像你这样的人也能很容易地找到解决办法。