基本思想:顺序栈相当于顺序表的子集,就是限制了相关操作,只允许在栈顶操作元素,基本的操作有入栈、出栈、获取栈顶元素等。
和链栈相比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即可