Sar*_*nKS 6 java nodes singly-linked-list
我有节点类
class Node{
int data;
Node next;
}
Run Code Online (Sandbox Code Playgroud)
我必须在列表中插入节点.它工作正常.但总是头值为零.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
在main函数中我创建了head节点as
public static void main(String args[] ) {
Scanner s = new Scanner(System.in);
Node head=new Node();
createlist(head,5);
}
Run Code Online (Sandbox Code Playgroud)
创建此实现后,从头开始的列表看起来像0-> 5.为什么0来了?
零来自head节点本身:
Node head=new Node();
Run Code Online (Sandbox Code Playgroud)
它永远不会被createList方法修改,因此字段中保留默认值零data。
归结为无法通过在下面的代码中分配来更改head内部:mainn
if(n==null)
n=newone;
Run Code Online (Sandbox Code Playgroud)
new Node这就是为什么你被迫在里面创造main,所以事实上n是永远不会的null。
您可以通过多种方式解决此问题:
head打印、删除等操作中的节点,或者Node以返回修改后的列表- 这将允许您插入新节点或删除头节点,或者MyList拥有所有节点的类——将所有列表操作移到“umbrella”类上,并head在那里处理节点。| 归档时间: |
|
| 查看次数: |
331 次 |
| 最近记录: |