时间:2021-05-20
顺序栈:利用一组连续的存储单元依次存放自栈底到栈顶的数据元素;由于栈顶元素是经常变动的,所以附设top指示栈顶元素在顺序表中的位置,同时也需要知道顺序栈存储空间的起始位置,因此还需设定一个base指针用来指示栈空间的起始位置。
一般约定top指针指向栈顶元素的下一个位置,即新数据元素将要插入得位置。
下面我们使用模板简单实现一个顺序栈:
SeqStack.h
template<typename Type> class SeqStack{public: SeqStack(int sz):m_ntop(-1),m_nMaxSize(sz){ m_pelements=new Type[sz]; if(m_pelements==NULL){ cout<<"Application Error!"<<endl; exit(1); } } ~SeqStack(){ delete[] m_pelements; } public: void Push(const Type item); //push data Type Pop(); //pop data Type GetTop() const; //get data void Print(); //print the stack void MakeEmpty(){ //make the stack empty m_ntop=-1; } bool IsEmpty() const{ return m_ntop==-1; } bool IsFull() const{ return m_ntop==m_nMaxSize-1; } private: int m_ntop; Type *m_pelements; int m_nMaxSize; }; template<typename Type> void SeqStack<Type>::Push(const Type item){ if(IsFull()){ cout<<"The stack is full!"<<endl; return; } m_pelements[++m_ntop]=item;} template<typename Type> Type SeqStack<Type>::Pop(){ if(IsEmpty()){ cout<<"There is no element!"<<endl; exit(1); } return m_pelements[m_ntop--];} template<typename Type> Type SeqStack<Type>::GetTop() const{ if(IsEmpty()){ cout<<"There is no element!"<<endl; exit(1); } return m_pelements[m_ntop];} template<typename Type> void SeqStack<Type>::Print(){ cout<<"bottom"; for(int i=0;i<=m_ntop;i++){ cout<<"--->"<<m_pelements[i]; } cout<<"--->top"<<endl<<endl<<endl;}Main.cpp
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了C++使用模板实现单链表的具体代码,供大家参考,具体内容如下这一篇可以和上一篇点击打开链接模板实现单链表进行对比看类外实现和类内实现的区别代
本文实例为大家分享了C语言利用模板实现简单的栈类(数组和单链表),供大家参考,具体内容如下主要的功能是实现一个后进先出的列表,有入栈、出栈、返回大小、判空等基本
本文实例讲述了C++用一个栈实现另一个栈的排序算法。分享给大家供大家参考,具体如下:题目:一个栈中元素类型为整型,现在想将该栈从顶到底按从小到大的顺序排序,只许
本文实例为大家分享了C++使用模板类实现链式栈的具体代码,供大家参考,具体内容如下一、实现程序:1.Stack.h#ifndefStack_h#defineSt
本文实例为大家分享了C++栈(stack)的模板类实现代码,供大家参考,具体内容如下1.基本概念 栈中的元素遵守“先进后出”的原则(LIFO,LastInFi