一、定義棧的基類
//棧的基類
template class stack
//判斷棧是否為空
virtual bool empty() = 0;
//棧中元素的大小
virtual size_t size() = 0;
//獲取棧頂元素
virtual t top() = 0;
//彈出棧頂元素
virtual t pop() = 0;
//入棧
virtual void push(const t &value)=0;
};
二、順序棧的實現
template class arraystack:public stack
//判斷棧是否為空
bool empty()
//棧中元素的大小
size_t size()
//獲取棧頂元素
t top();
//彈出棧頂元素
t pop();
//入棧
void push(const t &value);
//列印棧
void print();
private:
void expend_capacity(const size_t &new_capacity);//動態擴容
private:
shared_ptrptr_;
size_t capacity_;
size_t size_;
};template arraystack::arraystack(size_t capacity):capacity_(capacity));}
template t arraystack::top()
template t arraystack::pop()
template void arraystack::expend_capacity(const size_t &new_capacity)
); copy(ptr_.get(),ptr_.get()+size_,temp.get());
ptr_.swap(temp);
temp.reset();
}template void arraystack::push(const t &value)
++size_;
ptr_.get()[size_-1]=value;
}template void arraystack::print()
{ for(int i=0;i棧(順序棧)----c語言
資料結構學習筆記:順序棧和鏈棧(c語言)
受限的線性表 棧 順序棧
include define maxsize 50 typedef int datatype using namespace std 棧的資料結構 順序棧 資料運算 1.初始化乙個空棧 初始指標 1 2.資料元素入棧 如果棧沒滿,資料元素入棧 3.資料元素出棧 如果棧沒空,資料元素出棧 4.得到棧頂...
線性表之棧
一種只能在一端進行插入或刪除操作的線性表被稱為棧,其中允許刪除或插入的一端為棧頂,另一端為棧底,棧底固定不變 棧的特點 先進後出,例如彈夾,先裝的子彈最後才能出 按照儲存結構可以分為兩種棧 順序棧的結構體定義 typedef struct sqstack 鏈棧結構體定義 typedef struct...
線性表之順序棧C 實現
線性表之順序棧 棧是限定僅在表尾 棧頂 進行插入刪除操作的線性表,filo 先進後出 一 順序棧的標頭檔案 seqstack.h 1 順序棧標頭檔案 2 include3 using namespace std 4 設定順序棧的大小 5const int stacksize 10 6 templat...