線性表(二) 棧之順序棧

2021-09-29 01:32:58 字數 1322 閱讀 6729

一、定義棧的基類

//棧的基類

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...