学习笔记(2)——栈和队列

栈和队列都是线性结构,是特殊的线性表。

栈:

仅在表尾进行插入或删除元素的操作。表尾称为栈顶,表头称为栈底。不含元素的空表为空栈。又称为”先进后出“线性表。

栈有两种存储结构:顺序存储和链式存储(与线性表类似)

设置top指针指向栈顶位置,base指针指向栈底位置,当top = base 时,栈为空栈。使用C语言时,不应限定栈的最大容量:先分配一个基本容量,当空间不够使用时,使用realloc命令进行空间扩充。

使用时,结合实际问题,利用”先进后出“的性质。


队列

仅在表的一段插入数据元素(队尾),在标的另一端删除数据元素(队头)。“先进先出”的线性表。

还有“双端队列”的特殊形式:限定插入和删除操作在表的两端进行的线性表。实际应用中有:输入受限的双端队列(一个端点允许插入和删除、另一个端点只允许删除);输出受限的双端列表(一个端点允许插入和删除、另一个端点只允许插入)。

链队列:用链表表示的队列。需要两个分别指向队头和队尾的指针。可以增设一个头结点,头结点指向队头。

循环队列:用顺序存储结构实现的队列。将连续的存储空间想象成首尾相连的圆环,同样有两个分别指向队头和队尾的指针。当头指针与尾指针指向同一个存储位置时,队列为空队列。

你可能感兴趣的:(数据结构)