栈结构,通俗易懂,特点:先进后出,后进先出。
以下,仅对于栈结构常用的操作进行实现
包括:
入栈(push),出栈(pop),判空(empty),栈顶元素(GetTop)
#include<iostream> usingnamespacestd; template<classT> classStack { public: Stack(Tsize)//初始化数组大小 :top(0)//栈顶指针,_size(size) { _array=newT[size];//top指向最后一个元素时,再往下跳会越界,所以多开一个 } ~Stack() { if(_array) { delete[]_array; } } public: voidPush(constTval) { if(top>=_size) { cout<<"overflow"<<endl; return; } else { _array[top]=val; top++; } } TPop() { Tret; if(top<0) { cout<<"underflow"<<endl; return-1; } else { top--; ret=_array[top]; } returnret; } boolisEmpty() { returntop==0; } TTop() { if(!isEmpty()) { return_array[top-1]; } else { cout<<"error:stackisempty!"<<endl; } } voidShow() { if(isEmpty()) { cout<<"stackhasnodata!"<<endl; return; } for(size_ti=0;i<top;i++) { cout<<_array[i]<<""; } cout<<endl; } private: size_ttop; size_t_size; T*_array; }; voidTest() { Stack<int>stk(5); stk.Push(1); stk.Push(2); stk.Push(3); stk.Push(4); stk.Push(5); stk.Show(); cout<<stk.Top()<<endl; cout<<stk.Pop()<<endl; cout<<stk.Pop()<<endl; cout<<stk.Pop()<<endl; cout<<stk.Top()<<endl; stk.Show(); } intmain() { Test(); system("pause"); return0; }
栈结构是最简单的数据结构,很多数据结构都会用到栈结构,所以简单的栈结构常用的操作需掌握。
若有纰漏,欢迎指正
本文出自 “Vs吕小布” 博客,请务必保留此出处http://www.jb51.cc/article/p-mnwevkyp-ms.html