栈和队列都有两种实现方式,一种在之前已经写过了,是链式存储形式,另一种是顺序存储形式。也就是这里所写的用数组的形式实现,和链式存储形式相比,有几个不同的地方。
- 顺序存储的方式,必须确定栈和队列的大小,也就是要确定数组的大小。而链式储存是动态分配的,根据需要来增减。
- 顺序存储的方式有溢出的现象,由于是数组存储,所以超出数组下标的时候就溢出了。
下面上代码:
SequentialStack.h 顺序存储栈头文件
#ifndef _SEQUENTIALSTACK_H_H
#define _SEQUENTIALSTACK_H_H
typedef int SStackEle;
const int MAXSTACK = 20;
typedef struct SSTACK
{
SStackEle arrele[MAXSTACK];
SStackEle top;
}SStack;
//初始化顺序栈
void InitSStack(SStack &s);
//压入栈
void PushSStack(SStack &s, SStackEle ele);
//出栈
void PopSStack(SStack &s, SStackEle &ele);
//判断栈是否为空
bool IsemptySStack(SStack s);
//得到栈顶元素
SStackEle GetTopSStack(SStack s);
#endif
SequentialQueue.h
顺序存储队列头文件