Java从单链列表的开头删除节点
 
 
 在此程序中,我们将创建一个单链接列表,并从列表的开头删除节点。要完成此任务,我们需要使头指针指向初始节点的直接下一个节点,该节点现在将成为列表的新头节点。
 
 
 
 
 考虑以上示例; Node是列表的头。使头指向列表中的下一个节点。现在,节点1将成为列表的新头。因此,删除节点。
 
算法
 
创建一个具有两个属性的类Node: data和next。下一个是指向列表中下一个节点的指针。 
创建另一个类DeleteStart,它具有两个属性: head和tail。 
 addNode()将一个新节点添加到列表中: 
 
 创建一个新节点。 
 首先检查head是否等于null,这意味着列表为空。 
 如果列表为空,头和尾都将指向新添加的节点。 
 如果列表不为空,则新节点将被添加到列表的末尾,以使尾部的下一个指向新添加的节点。这个新节点将成为列表的新尾巴。 
  a.deleteFromStart()将从列表的开头删除一个节点: 
 
首先检查标头是否为空(空列表),然后显示消息"列表为空"并返回。 
如果列表不为空,则将检查列表是否只有一个节点。 
如果列表中只有一个节点,则会将head和tail都设置为null。 
如果列表中有多个节点,那么头部将指向列表中的下一个节点并删除旧的头部节点。 
  a.display()将显示列表中存在的节点: 
 
定义一个当前将首先指向列表开头的节点。 
遍历列表,直到当前指向null为止。 
在每次迭代中通过使电流指向其旁边的节点来显示每个节点。 
 
程序: 
 
 
  
   public class DeleteStart {
     //Represent a node of the singly linked list
     class Node{
         int data;
         Node next;
         public Node(int data) {
             this.data = data;
             this.next = null;
         }
     }
     //Represent the head and tail of the singly linked list
     public Node head = null;
     public Node tail = null;
     //addNode() will add a new node to the list
     public void addNode(int data) {
         //Create a new node
         Node newNode = new Node(data);
         //Checks if the list is empty
         if(head == null) {
             //if list is empty, both head and tail will point to new node
             head = newNode;
             tail = newNode;
         }
         else {
             //newNode will be added after tail such that tails next will point to newNode
             tail.next = newNode;
             //newNode will become new tail of the list
             tail = newNode;
         }
     }
     //deleteFromStart() will delete a node from the beginning of the list
     public void deleteFromStart() {
         //Checks if the list is empty
         if(head == null) {
             System.out.println("List is empty");
             return;
         }
         else {
             //Checks whether the list contains only one node
             //if not, the head will point to next node in the list and tail will point to the new head.
             if(head != tail) {
                 head = head.next;
             }
             //if the list contains only one node
             //then, it will remove it and both head and tail will point to null
             else {
                 head = tail = null;
             }
         }
     }
     //display() will display all the nodes present in the list
     public void display() {
         //Node current will point to head
         Node current = head;
         if(head == null) {
             System.out.println("List is empty");
             return;
         }
         while(current != null) {
             //Prints each node by incrementing pointer
             System.out.print(current.data + " ");
             current = current.next;
         }
         System.out.println();
     }
     public static void main(String[] args) {
         DeleteStart sList = new DeleteStart();
         //Adds data to the list
         sList.addNode(1);
         sList.addNode(2);
         sList.addNode(3);
         sList.addNode(4);
         //Printing original list
         System.out.println("Original List: ");
         sList.display();
         while(sList.head != null) {
             sList.deleteFromStart();
             //Printing updated list
             System.out.println("Updated List: ");
             sList.display();
         }
     }
 }
  
 
 
  
 
 输出:  
 
 
  
   Original List: 
 1 2 3 4 
 Updated List: 
 2 3 4 
 Updated List: 
 3 4 
 Updated List: 
 4 
 Updated List: 
 List is empty