Stack容器:
1)容器适配器,遵循先进后出(FILO)数据结构。 2)头文件:#include <stack> 3)常用函数: stack<int>s; s.empty()//如果栈为空返回true,否则返回false s.size()//返回栈中元素的个数 s.pop()//删除栈顶元素但不返回其值 s.top()//返回栈顶的元素,但不删除该元素 s.push(X)//在栈顶压入新元素 ,参数X为要压入的元素
例子:
#include<stack> #include<iostream> using namespace std; int main() { stack<int>s; int a[8] = { 3,5,17,9,30,15,2,4 }; for (int i = 0; i < 8; i++) { s.push(a[i]);//入栈 } cout << s.size() << endl;//栈中所有元素个数 cout << s.top() << endl;//栈顶元素 //依次输出栈中所有元素 while (!s.empty()) { cout << s.top() << " "; s.pop(); } cout << endl; //没有自动清空的栈的函数,应这样实现 while (!s.empty()) { s.pop(); } return 0; }
数据结构实现:
#include<iostream> using namespace std; const int MAXN = 100;//栈的最大长度 //定义栈 struct Stack { int *stack; int top; }; //初始化栈 void InitStack(Stack& s) { s.stack = new int[MAXN]; s.top = -1; } //入栈 void Push(Stack &s, int item) { s.top++; s.stack[s.top] = item; } //出栈 int Pop(Stack& s) { s.top--; return s.stack[s.top + 1]; } //读取栈定元素 int Peek(Stack s) { return s.stack[s.top]; } //清空栈 void ClearStack(Stack& s) { if (s.stack) { delete[]s.stack; s.stack = 0; } s.top = -1; } //判断栈是否为空 bool EmptyStack(Stack s) { return s.top == -1; } int main() { Stack s; InitStack(s); int a[8] = { 3,5,17,9,30,15,2,4 }; for (int i = 0; i < 8; i++) { Push(s, a[i]); } cout << Peek(s) << endl; //注意输出采用如下方式 while (!EmptyStack(s)) { cout << Pop(s) << " "; } ClearStack(s); return 0; }