在头为空的链表中插入
Insertion in a linked list having head as null
我有节点 class 作为
class Node{
int data;
Node next;
}
我必须向列表中插入节点。
它工作正常。但头部值始终为零。
public void createlist(Node n,int p)
{
Node newone = new Node();
newone.data=p;
newone.next=null;
if(n==null)
n=newone;
else
{
while(temp.next!=null)
temp=temp.next;
temp.next=newone;
}
}
在主函数中我创建了头节点
public static void main(String args[] ) {
Scanner s = new Scanner(System.in);
Node head=new Node();
createlist(head,5);
}
创建此实现后,从头部开始的列表如下所示
0->5。为什么0来了?
零来自 head
节点本身:
Node head=new Node();
它永远不会被 createList
方法修改,因此默认值零保留在 data
字段中。
归结为无法通过在下面的代码中分配 n
来更改 main
内部的 head
:
if(n==null)
n=newone;
这就是为什么你被迫在 main
中创建 new Node
,所以实际上 n
是
从不 null
.
您可以通过多种方式解决此问题:
- 以特殊方式处理头节点——忽略
head
中的节点进行打印、删除等操作,或
- 将对
Node
对象进行操作的方法更改为 return 修改后的列表 - 这将允许您插入新节点或删除头节点,或者
- 引入一个拥有所有节点的
MyList
class - 移动"umbrella"class上的所有列表操作,以及在那里处理 head
节点。
我有节点 class 作为
class Node{
int data;
Node next;
}
我必须向列表中插入节点。 它工作正常。但头部值始终为零。
public void createlist(Node n,int p)
{
Node newone = new Node();
newone.data=p;
newone.next=null;
if(n==null)
n=newone;
else
{
while(temp.next!=null)
temp=temp.next;
temp.next=newone;
}
}
在主函数中我创建了头节点
public static void main(String args[] ) {
Scanner s = new Scanner(System.in);
Node head=new Node();
createlist(head,5);
}
创建此实现后,从头部开始的列表如下所示 0->5。为什么0来了?
零来自 head
节点本身:
Node head=new Node();
它永远不会被 createList
方法修改,因此默认值零保留在 data
字段中。
归结为无法通过在下面的代码中分配 n
来更改 main
内部的 head
:
if(n==null)
n=newone;
这就是为什么你被迫在 main
中创建 new Node
,所以实际上 n
是
从不 null
.
您可以通过多种方式解决此问题:
- 以特殊方式处理头节点——忽略
head
中的节点进行打印、删除等操作,或 - 将对
Node
对象进行操作的方法更改为 return 修改后的列表 - 这将允许您插入新节点或删除头节点,或者 - 引入一个拥有所有节点的
MyList
class - 移动"umbrella"class上的所有列表操作,以及在那里处理head
节点。