栈和队列是限定插入和删除只能在表的“端点”进行的线性表
栈 (stack)是限仅在一端(通常是表尾)进行插入和删除操作的线性表。又称为后进先出 (Last In First Out) 的线性表,简称LIFO结构。
表尾(即an端)称为栈顶 Top;表头(即a1端)称为栈底Base
插入元素到栈顶(即表尾)的操作,称为入栈。
从栈顶(即表尾)删除最后一个元素的操作,称为出栈。
队列插入也只能在最后一个元素,删除只能删第一个元素
栈的顺序存储结构—顺序栈
栈的链式存储结构—链栈
顺序栈
设top指针指示真正的栈顶元素之上的下标地址。
设base指针指示栈底元素地址。
用stacksize表示栈可使用最大容量。
空栈:base=top
栈满:top-base=stacksize
上溢(overflow):栈已经满,又要压入元素
下溢(underflow):栈已经空,还要弹出元素
顺序栈算法实现
初始化
清空顺序栈
销毁顺序栈
入栈
出栈
链栈的算法实现
入栈
出栈
栈和递归
递归的定义
队列的表示和操作
表尾即an端,称为队尾;表头即a1端,称为队头。
插入元素称为人队; 删除元素称为出队
队列的存储结构为链队或顺序队
base是地址指向数组首元素
front,rear虽然称做指针,但不是指针变量,是用来表示数组中元素位置的下标,
假溢出
队空和队满都是front=rear解决方法
少用一个空间
则队空:front==rear。
队满:(rear+1)%MAXQSIXZE==front
队列初始化
求长度
入队
出队
链队列
初始化
销毁
入队
出队