前言
本系列文章是笔者学习数据结构的笔记,如有不妥之处欢迎指正
什么是线性结构
- 所有的节点连在一根“线”上
- 一个逻辑结构可以用于多种存储结构,线性结构中的线性表可以采用连续存储存储(数组) 和 离散存储(链表)
bool类型
- 使用时需添加“stdbool.h”这个头文件
- 返回逻辑“真”“假”
typedef函数
#include<stdio.h>
typedef int abc; //为固定句式再起一个名字,减少后续的工作量
int main() //原有的名字可以继续使用
{
abc ccc = 6;
printf("%d",ccc);
return 0;
}
运行结果为
6
链表
离散存储(链表)
- 各个数据在内存中不是连续存储的
何为链表
- 特点:
- 节点之间离散存储
- 各个节点通过指针相连
- 每个节点只的首尾只有一个节点与其相连
- 首节点之前没有节点,为节点之后没有节点
- 术语:
- 首节点(存放有效数据的第一个节点)
- 尾节点(最后一个有效节点)
- 头节点(仅存放首节点的位置信息,不存放其他任何信息,方便对链表进行操作)
- 头指针(指向头节点的指针变量)
- 尾指针(表示链表的结束,一般为NULL)
- 确定链表仅需一个参数即可: 头指针,因为链表是概念上首位相接的,因此知道了头指针就能推出后面的链表**
- ↑人话来说就是函数间传递链表的时候仅需传递头指针即可↑
链表的分类
-
单向链表(单行道)
-
双向链表(除头节点外每个节点有两个指针域,双行车道)
-
循环链表(通过任何一个节点都能找到其他节点,绕地球一圈会回到原地)
- 非循环链表
链表的节点(单向)
- 除头节点外每个单向链表的节点都分为两个部分:指针域和数据域分别存放指针变量和数据
- 头节点仅包含指针域
表示链表的结构代码
#include<stdio.h>
struct node
{
int data; //数据域
struct node * Next; //指针域
};