欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构与算法学习笔记(11):图解数据结构与算法-链表(一)&(二)&(三):单链表的概念与结构

程序员文章站 2024-02-26 17:53:28
...

立即学习:https://edu.csdn.net/course/play/29510/420452?utm_source=blogtoedu

链表(一)&(二)&(三):单链表的概念与结构

 

链表的概念

链表是一种物理存储单元上非连续、非顺序的存储结构数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。

 

链表类型

单链表  双向链表  循环链表

 

单链表

数据结构与算法学习笔记(11):图解数据结构与算法-链表(一)&(二)&(三):单链表的概念与结构数据结构与算法学习笔记(11):图解数据结构与算法-链表(一)&(二)&(三):单链表的概念与结构

单链表的构造

【思路】

一个结点,一块存储数据,并有一个指针引向下一个结点

/*
* 如何构造一个单链表?
* 成员变量:
* 1.head头结点
* 2.data数据块
* 3.next结点指引
* */

public Class Node{
    private Node head;
    private Object data;
    private Node next;
    
    public Node(Object data){
        this.data = data;
    }
    public Node(){}
    
    public void add(Object data){
        Node node = new Node(data);
        if(head == null){
            head = node;
            return;
        }
        Node temp = head; 
        while(temp.next != null){
            temp = temp.next;
        }
        temp.next = node;
    }

    public static void main(String[] args) {
        Node node = new Node();
        node.add(1);
        System.out.println(node.head.data);
        node.add(2);
        System.out.println(node.head.next.data);
        node.add(3);
        System.out.println(node.head.next.next.data);
        node.add(4);
        System.out.println(node.head.next.next.next.data);
        node.add(5);
        System.out.println(node.head.next.next.next.next.data);
    }
}

单链表的优劣

单链表中,每个结点的数据域都是通过一个Object类的对象引用来指引数据元素的,与数组类似,单向链表中的结点也具有一个线性次序,即如果结点a1的next引用指向结点a2,则a1就是a2的直接前驱,a2是a1的直接后续。只能通过前驱节点找到后续节点,而无法从后续节点找到前驱节点。

数据结构与算法学习笔记(11):图解数据结构与算法-链表(一)&(二)&(三):单链表的概念与结构

顺序存储(比如数组)内存空间固定,根据角标查找就可以直接找到。链式存储,需要一个一个的查询下一节点位置。