C++ 数据结构算法 学习笔记(3)-链表
原理精讲
链表是线性表的链式存储方式,逻辑上相邻的数据在计算机内的存储位置不必须相邻,那么 怎么表示逻辑上的相邻关系呢?可以给每个元素附加一个指针域,指向下一个元素的存储位 置。如图所示:
从图中可以看出,每个结点包含两个域:数据域和指针域,指针域存储下一个结点的地址, 因此指针指向的类型也是结点类型
链表的核心要素:
- 每个节点由数据域和指针域组成
- 指针域指向下一个节点的内存地址
其结构体的定义:
typedef struct LinkNode{
ElemType data;
struct LinkNode *next;
}LinkList,LinkNode;
单链表的概念
链表的节点均单向指向下一个节点,形成一条单向访问的数据链
他可以想象成一条链,每一节都挨在一起.如下图所示
需要注意的是链表头结点都不会有数据,它只有指针域,指向下一个元素的存储位.
而最后一个节点会有数据,但是他的指针域会指向NULL
的位置!
单链表的初始化
代码例子如下:
typedef struct _LinkNode
{
int data;
struct _LinkNode* next;
}LinkNode, LinkList;