天天看点

小菜一步一步学数据结构之(五)顺序栈

只能在表的一端(栈顶)进行插入和删除运算的线性表

一对一关系

用顺序栈或链栈存储均可,但以顺序栈更常见

小菜一步一步学数据结构之(五)顺序栈

只能从栈顶运算,且访问结点时依照后进先出(lifo)或后进后出(filo)的原则

关键是编写入栈和出栈函数,具体实现依顺序栈或链栈的不同而不同

入栈

出栈

读栈顶元素值

建栈

判断栈满

栈空

栈是一种特殊的线性表,它只能在表的一端(栈顶)进行插入或删除运算

**

一般线性 表

逻辑结构

一对一

存储结构

顺序表、链表

顺序栈、链栈

运算规则

随机、顺序存储

后进先出

小菜一步一步学数据结构之(五)顺序栈
我们在平常的程序设计中,如果需要按照保存数据时相反的顺序来使用数据,可以利用栈来实现。

stacksize 指示栈的最大容量;base为栈底指针,它始终指向栈底位置,若base的值为null,则表明栈结构不存在;top为栈顶指针,其初值指向栈底,即top=base可作为栈空的标记。每当插入新的栈顶元素时,指针top增加1;删除栈顶元素时,指针top减1.因此,非空栈中的栈顶指针始终在栈顶元素的下一个位置上。

base == top 是栈空的重要标志

报错,返回操作系统。

分更大的空间,作为栈的存储空间,将原栈的内容移入新栈。

小菜一步一步学数据结构之(五)顺序栈

(1)分配空间并检查空间是否分配失败,若失败则返回错误

(2)设置栈底和栈顶指针

s.top = s.base;

(3)设置栈大小

【算法描述】

继续阅读