单链表的头插法

Posted *平芜尽处是春山*

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单链表的头插法相关的知识,希望对你有一定的参考价值。

初识单链表(头插法)

package seqlist;
import java.util.Arrays;
class Node
    //存储元素
    int data;
    //存储下一节地址
    Node next;

    public Node(int data) 
        this.data = data;
    

    public Node(int data,Node next) 
        this.data = data;
        this.next = next;
    


public class SingleLinkedList 
    private int size;
    private Node head;
    public void addFirst(int data) 
        if (size == 0) 
            Node node = new Node(data);
            head = node;
            size++;
         else 
            Node node = new Node(data);
            node.next = head;
            head = node;
            size++;
        
    

        public static void main(String[] args) 
            SingleLinkedList singleLinkedList = new SingleLinkedList();
            singleLinkedList.addFirst(1);
            singleLinkedList.addFirst(3);
            singleLinkedList.addFirst(5);
            System.out.println(singleLinkedList);
        

        @Override
        public String toString() 
            String ret =" ";
            Node node = head;
            while(node != null) 
                ret += node.data +"->";
                node = node.next;
            
            ret += "NULL";
            return ret;
        
    

运行截图:

注意事项:
1、这两步能否互换?

不能的噢,应该先连接head再指向更新。

2、为什么要有一个临时变量node来存储head的值?

如果直接使用head,当链表遍历一遍之后,这个链表就无法再次使用啦!

以上是关于单链表的头插法的主要内容,如果未能解决你的问题,请参考以下文章

单链表的逆序 (采用头插法实现)

单链表的练习-头插法

链表的头插法和尾插法

线性表的链式存储-单链表

C实现头插法和尾插法来构建单链表(不带头结点)

leetcode-2 两数相加(链表的头插法尾插法两个不同长度链表相加减操作的处理方法)