亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++模板如何實現順序棧

發布時間:2020-07-30 11:08:29 來源:億速云 閱讀:140 作者:小豬 欄目:編程語言

小編這次要給大家分享的是C++模板如何實現順序棧,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

順序棧:利用一組連續的存儲單元依次存放自棧底到棧頂的數據元素;由于棧頂元素是經常變動的,所以附設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

#include<iostream>
using namespace std;
 
#include "SeqStack.h"
 
int main(){
 SeqStack<int> stack(10);
 int init[10]={1,2,6,9,0,3,8,7,5,4};
 for(int i=0;i<10;i++){
 stack.Push(init[i]);
 }
 stack.Print();
 
 stack.Push(88);
 
 cout<<stack.Pop()<<endl;
 stack.Print();
 
 stack.MakeEmpty();
 stack.Print();
 
 stack.Pop();
 return 0;
}

看完這篇關于C++模板如何實現順序棧的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湖口县| 宜春市| 驻马店市| 昭苏县| 龙山县| 峨眉山市| 江北区| 县级市| 怀化市| 安庆市| 昭觉县| 西平县| 沙田区| 桦南县| 资阳市| 木里| 江都市| 施秉县| 合阳县| 东台市| 临沭县| 屏山县| 湛江市| 岗巴县| 射洪县| 会宁县| 西吉县| 县级市| 枝江市| 兰西县| 遵化市| 无极县| 禄丰县| 嵊州市| 定边县| 南乐县| 二手房| 孟州市| 刚察县| 昆山市| 白银市|