线性链表
采用链式存储的线性表
特点:每个结点都分为两部分
数据域:存储元素的值
指针域:存放直接前趋或直接后继元素的地址信息
data | next |
链表的定义与初始化
求单链表的长度
链表的运算:插入新结点,删除新结点
其它形式的链表
单向循环链表:将单链表尾结点的指针由NULL改为指向头结点,首尾连接形成一个环形,简称为循环链表
双向链表:
prior | data | next |
双向循环链表
栈:一摞碗
只能在一端进行插入和删除操作的特殊线性表
允许进行插入和删除操作的一端称为栈顶,另一端称为栈底
特点:先进后出/后进先出
栈的主要操作:
入栈:进栈,压栈,在栈顶加入新的元素
出栈:退栈,弹栈,将栈顶元素删除
读栈顶元素:只读出栈顶元素,但不出栈
顺序栈的定义
入栈
出栈
取栈顶
一般很少用链式结构来表示栈
队列
只能在表的一端进行插入操作,在另一端进行删除操作的特殊线性表
允许删除元素的一端称为队头,允许插入元素的一端称为队尾
特点:先进先出,后进后出
队列的主要操作:
判断队列是否满
判断队列是否为空
入队:在队尾插入元素
出队:在队头删除元素
取队头元素
循环队列:将队列的头尾相连形成一个圆圈
当队尾和队头重叠时队列是空还是满?
约定:当队头队尾相等时,队空;当队尾加1后等于队头时,队满
队列的定义
入队
出队
链式队列
链式队列求长度
入队
出队
标准模版库
容器:list双向链表;vector大小可以动态增加的顺序表;queue队列;stack栈;string字符串