在头为空的链表中插入

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 修改后的列表 - 这将允许您插入新节点或删除头节点,或者
  • 引入一个拥有所有节点的MyListclass - 移动"umbrella"class上的所有列表操作,以及在那里处理 head 节点。