数据结构和算法学习总结04 线性表---栈
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构和算法学习总结04 线性表---栈相关的知识,希望对你有一定的参考价值。
栈
栈(Stack)是特殊的线性表,是只允许在一端进行插入和删除的线性表。
允许插入和删除的叫栈顶,反之则是栈底。
栈的插入称为进栈,删除称为出栈。
特性是:后进先出,所以栈也叫后进先出表,简称LIFO表(Last In First Out)。
因为栈是线性表,所以也有顺序表和链表两种形式,一般我们常用顺序表。
从代码中可以看出:与顺序表相比实际上就是插入和删除操作发生了改变。
#include <iostream> using namespace std; const int Stack_Size = 5; class SqStack { private: int *elem; int top; int stackSize; public: void InitSqStack(); //顺序栈的初始化 int GetTop(); //获得栈顶元素 int Length(); //获得当前栈的容量 void DestroySqStack(); //销毁顺序栈 void ClearSqStack(); //清空顺序栈 void Push(int v); //压栈/入栈/进栈 int Pop(); //出栈 void InputSqStack(int n); //输入元素 void OutputSqStack(); //遍历输出 }; void SqStack::InitSqStack() { elem=new int[Stack_Size]; top=-1; stackSize=Stack_Size; } int SqStack::GetTop() { if(top==-1) cout<<"空栈"<<endl; int e = elem[top]; return e; } int SqStack::Length() { if(top==-1) cout<<"空栈"<<endl; return top+1; } void SqStack::DestroySqStack() { delete[] elem; top=-1; stackSize=0; } void SqStack::ClearSqStack() { top=-1; } void SqStack::Push(int v) { if(top==stackSize-1) { int *newStack; newStack = new int[stackSize + 1]; for(int i=0;i<=top;i++) { newStack[i]=elem[i]; } delete[] elem; elem = newStack; stackSize++; } elem[++top]=v; } int SqStack::Pop() { int v; if(top==-1) cout<<"空栈"<<endl; v=elem[top--]; return v; } void SqStack::InputSqStack(int n) { int a; cout<<"enter numbers:"<<endl; for (int i = 0; i < n; i++) { cin>>a; Push(a); } } void SqStack::OutputSqStack() { if ((elem == NULL)||(top==-1)) cout<<"出现错误"<<endl; else { for (int i = 0; i <= top; i++) { cout<<elem[i]<<" "; } cout<<endl; } } void main() { SqStack S; S.InitSqStack(); S.InputSqStack(6); S.OutputSqStack(); cout<<S.GetTop()<<endl; S.Pop(); S.OutputSqStack(); }
以上是关于数据结构和算法学习总结04 线性表---栈的主要内容,如果未能解决你的问题,请参考以下文章