栈由元素列表、指向栈顶的下表或指针以及栈的方法集,顺序栈中,栈的大小不能超过数组元素的个数,满栈状态也与此状态有关。
顺序栈的说明中包括表Stcklist,栈顶下标top。初始时栈为空,此时top=-1。每当一个元素进栈push时,top的值加1,每当一个元素出栈时,top的值减1。
#include<iostream> using namespace std; const int MaxStackSize = 50; // 栈中能容纳的最大元素个数 class Stack { private: int StackList[MaxStackSize]; int top; public: Stack(); bool IsEmpty(); // 判断栈状态是否为空, 若空返回true,否则返回false bool IsFull(); // 判断栈的状态是否满,若满则为true,否则返回false int GetTop(); // 取栈顶元素 void Push(int x); // 入栈 void Pop(); // 出栈 void Clear(); // 栈清空 }; Stack::Stack() { top = -1; } bool Stack::IsEmpty() { return (top == -1); } bool Stack::IsFull() { return (top == MaxStackSize - 1); } int Stack::GetTop() { if (IsEmpty()) { cout << "栈空" << endl; exit(0); } return StackList[top]; } void Stack::Push(int x) { if (IsFull()) { cout << "栈满!" << endl; exit(0); } StackList[++top] = x; } int Stack::Pop() { if(IsEmpty()) { cout << "栈空!" << endl; exit(0); } return StackList[top--]; } void Stack::Clear() { top = -1; } int main() { Stack s; s.Push(3); s.Push(5); s.Push(7); s.Pop(); int t = s.GetTop(); cout << t << endl; return 0; }