链表结构是内存内部的一种存储方式,可以把链表结构想象成是一串节点,由若干个节点穿成一串的数据结构。每个节点都有两个区域:数据域和指针域。指针域指向下一个节点的地址。下一个节点也是包含一个数据域和一个指针域。在链表结构中,之所以能成为链表结构,是因为有一个指针域。指针域存储的是下一个节点的引用(相关的引用) 指针域: c->内存中的一个地址,地址可以唯一标记一个节点的位置 某些特殊的写法,指针域可能存储的是数组下标。数组下标是特殊的地址。下标是相对地址的概念。 引用:js,Java,python 在相关的结构中增加一个指针域,就可以串成链表结构。
1、链表中的每个节点至少包含两个部分:数据域 与 指针域 2、链表中的每个节点,通过指针域的值,形成一个线性结构 3、查找节点O(n),插入节点O(1),删除节点O(1) 4、不适合快速的定位数据,适合动态插入和删除数据的应用场景
单向链表查找得从头到尾查找;链表是一种松散结构,是通过指针域去控制结构的,只需要改变指针域的指向,就可以完成插入和删除。
双向链表:2个指针域 可以向前查找也可以向后查找
几种经典的链表实现方法 class
1、结构体 struct Node {
// 存储数据 int data; // 存储下一个节点的地址 Node *next; } 2、2个数组,一个数组存储数据域,一个数组存储指针域
链表的典型应用场景
场景一:操作系统内的动态内存分配