线性表之顺序栈

时间:2022-07-02 10:23:26

基本思想:顺序栈相当于顺序表的子集,就是限制了相关操作,只允许在栈顶操作元素,基本的操作有入栈、出栈、获取栈顶元素等。

和链栈相比03除了不能动态增长外(目前为止),其余的操作时间复杂度都一样。

C代码实现下载
C++代码实现下载
java代码实现下载
(备用下载地址)

实现功能:
1.void InitStack(); 初始化栈

1).new一块连续的空间存放数据。
2).初始化栈顶指针(这里的指针并不是真的指针,而是一个指示变量)

如图:
线性表之顺序栈

2.void DestroyStack(); 销毁栈

1).delete m_data。
2).把栈顶指针指向-1

3.bool IsEmpty(); 栈是否为空

如果top == -1 则栈为空

4.bool IsFull(); 栈是否满了

如果top == stackSize - 1 则栈已满

5.int GetSize(); 获取当前栈的长度

直接返回top + 1

6.void Push(T e); 入栈


m_data[++m_top] = e; 这个操作之前一定要判断栈是否满,否则会出现数组越界。

如图:
线性表之顺序栈

7.void Pop(); 出栈(不返回栈顶元素)

顺序栈中,不需要删除元素,只需要改变栈顶指针即可

如图:
线性表之顺序栈

8.T PopE(); 出栈(返回栈顶元素)

9.T GetTop(); 获取栈顶元素

10.void Print(); 遍历栈

11.void ClearStack(); 清空栈

只需要把top指向-1即可

线性表之双向链表
线性表之循环链表
线性表之单链表
线性表之顺序表