顺序栈:栈的顺序存储结构
2012-08-02 00:00
996 查看
既然栈是线性表的特例,那么栈的顺序存储其实也是线性表顺序存储的简化,我们将其简称为顺序栈。
线性表是用数组来实现的,对于栈这种只能一头插入删除的线性表来说,用数组哪一端来作为栈顶和栈底比较好?
下标为0的一端作为栈底比较好,因为首元素都存在栈底,变化最小,所以让它作栈底。
我们定义一个top变量来指示栈顶元素在数组中的位置,这top就如同中学物理学过的游标卡尺的游标,如上图所示,它可以来回移动,意味着栈顶的top可以变大变小,但无论如何游标不能超出尺的长度。同理,若存储栈的长度为StackSize,则栈顶位置top必须小于StackSize。当栈存在一个元素时,top等于0,因此通常把空栈的判定条件定为top等于-1。
下面看看栈的结构体定义:
若现在有一个栈,StackSize是5,则栈普通情况、空栈和栈满的情况示意图可以从下图清楚看出。
栈的定义与大概理解
栈的抽象数据类型ADT
顺序栈:栈的顺序存储结构
顺序栈的进栈操作
顺序栈的出栈操作
获取顺序栈的栈顶元素
链栈:栈的链式存储结构
链栈的进栈操作
链栈的初始化与遍历
链栈的出栈操作
链栈的置空操作与判断链栈是否为空
为什么要使用栈这种数据结构
递归,栈的重要应用之一
栈是如何实现递归的
接触后缀表达式(逆波兰表示法)
图解后缀表达式的计算过程
将中缀表达式转化为后缀表达式
开始学习队列这个数据结构
队列的抽象数据类型ADT
顺序队列:队列的顺序存储结构
顺序队列的入队操作
顺序队列的出队操作
顺序队列置空与判断操作
队列顺序存储结构的不足
关于循环队列的一些讲解
链队列:队列的链式存储结构
链队列的初始化操作
链队列的入队操作
链队列的出队操作
补完链队列的其它常见操作
循环队列与链队列的优劣势
线性表是用数组来实现的,对于栈这种只能一头插入删除的线性表来说,用数组哪一端来作为栈顶和栈底比较好?
下标为0的一端作为栈底比较好,因为首元素都存在栈底,变化最小,所以让它作栈底。
我们定义一个top变量来指示栈顶元素在数组中的位置,这top就如同中学物理学过的游标卡尺的游标,如上图所示,它可以来回移动,意味着栈顶的top可以变大变小,但无论如何游标不能超出尺的长度。同理,若存储栈的长度为StackSize,则栈顶位置top必须小于StackSize。当栈存在一个元素时,top等于0,因此通常把空栈的判定条件定为top等于-1。
下面看看栈的结构体定义:
#include "stdio.h" /* 存储空间初始分配量 */ #define MAXSIZE 20 /* SElemType类型根据实际情况而定,这里假设为int */ typedef int SElemType; /* 顺序栈结构 */ typedef struct { SElemType data[MAXSIZE]; int top; /* 用于栈顶指针 */ }SqStack; int main() { }
若现在有一个栈,StackSize是5,则栈普通情况、空栈和栈满的情况示意图可以从下图清楚看出。
延伸阅读
此文章所在专题列表如下:栈的定义与大概理解
栈的抽象数据类型ADT
顺序栈:栈的顺序存储结构
顺序栈的进栈操作
顺序栈的出栈操作
获取顺序栈的栈顶元素
链栈:栈的链式存储结构
链栈的进栈操作
链栈的初始化与遍历
链栈的出栈操作
链栈的置空操作与判断链栈是否为空
为什么要使用栈这种数据结构
递归,栈的重要应用之一
栈是如何实现递归的
接触后缀表达式(逆波兰表示法)
图解后缀表达式的计算过程
将中缀表达式转化为后缀表达式
开始学习队列这个数据结构
队列的抽象数据类型ADT
顺序队列:队列的顺序存储结构
顺序队列的入队操作
顺序队列的出队操作
顺序队列置空与判断操作
队列顺序存储结构的不足
关于循环队列的一些讲解
链队列:队列的链式存储结构
链队列的初始化操作
链队列的入队操作
链队列的出队操作
补完链队列的其它常见操作
循环队列与链队列的优劣势
相关文章推荐
- 栈的顺序存储结构——顺序栈 图解和代码实现
- 数据结构(二):线性表包括顺序存储结构(顺序表、顺序队列和顺序栈)和链式存储结构(链表、链队列和链栈)
- C语言 数据结构 栈和队列 顺序栈(栈的顺序存储结构)
- C/C++线性顺序存储结构
- 栈的顺序存储结构_C#实现3[数组实现]
- 顺序栈的一些操作
- 线性表的顺序存储结构---顺序表
- 顺序存储结构的插入与删除
- 顺序队列:队列的顺序存储结构
- 【数据结构】字符串顺序存储结构
- 数据结构三栈的顺序存储结构
- 数据结构:队列的顺序存储结构(循环队列)
- ※数据结构※→☆线性表结构(list)☆============链表 顺序存储结构(list sequence)(一)
- 顺序栈和链栈
- 线性表顺序存储结构实现
- 线性表——顺序存储结构
- 队列的顺序存储结构及其基本运算的实现
- 简要比较线性表的顺序存储结构和链式存储结构
- C /C++ 顺序栈
- 数据结构——顺序栈与链栈的C++实现