1. 讲解:
用顺序的物理结构(数组)存储栈这个数据结构,实现栈的创建、销毁、增删查、判空。
top指针的指向位置有两种实现方法:一个是指向栈顶元素;一个是指向栈后第一个元素。这里用的是指向栈顶元素的方法实现,这两种不同的实现方式只是在有的操作中需要有部分修改。
2. C++代码实现:
#include <iostream> using namespace std; #define MaxSize 10 #define ElemType int typedef struct { ElemType data[MaxSize]; // 静态数组存放元素 int top; // 栈顶指针 }SqStack; // 初始化栈 void InitStack(SqStack& S) { S.top = -1; // 初始化栈顶指针 } // 判断栈空 bool StackEmpty(SqStack S) { if (S.top == -1) return true; else return false; } // 入栈 bool Push(SqStack& S, ElemType e) { if (S.top == MaxSize - 1) return false; // 如果栈满则失败 S.data[++S.top] = e; // 栈顶指针加一 return true; } // 出栈 bool Pop(SqStack& S, ElemType& e) { if (S.top == -1) return false; // 如果栈空则失败 e = S.data[S.top--]; // 栈顶指针减一 return true; } // 读栈 bool GetTop(SqStack& S, ElemType& e) { if (S.top == -1) return false; // 如果栈空则失败 e = S.data[S.top]; // 栈顶指针减一 return true; } void main() { SqStack S; // 声明顺序栈(分配空间) // 1.初始化 InitStack(S); // 2.进栈 Push(S, 1); // 3.读取栈顶元素 int e; GetTop(S, e); cout << e << endl; // 4.出栈 Pop(S, e); cout << e << endl; }