資料結構 順序棧的實現(實驗3 1)

2021-08-09 11:56:53 字數 2032 閱讀 1864

1、熟練掌棧的結構特點,掌握棧的順序儲存結構和實現。

2、學會使用棧解決實際問題。

二、實驗內容

1、自己確定結點的具體資料型別和問題規模,建立乙個順序棧,實現棧的壓棧和出棧操作。

三、實驗步驟

1、依據實驗內容分別說明實驗程式中用到的資料型別的定義;

template < typename t >

class seqstack //建構函式,初始化乙個空棧

~seqstack() {} //析構函式為空

void push(t x); //入棧操作,將元素x入棧

t pop(); //出棧操作,將棧頂元素彈出

t get() //取棧頂元素(不刪除)

bool empty() //判斷棧是否為空

bool full() //判斷是否棧滿

void print(); //遍歷操作

private:

t data[stacksize]; //存放棧元素的陣列

int top; //棧頂指標,為棧頂元素在陣列中的下標

};

2、相關操作的演算法表達;

2.1、建構函式,初始化乙個空棧

2.2、入棧操作函式:①.判斷是否棧滿,若是則返回,否則 

②.先棧頂指標 top 往上移一位,再在該位儲存資料

2.3、出棧操作函式:①判斷是否棧空,若是則返回 -1,否則 

②先返回棧頂指標 top 指向的位置的值,再把棧頂指標 top 往下移一位

2.4、輸出操作函式:按照順序,輸出棧元素。

3、完整程式;

由於結點元素型別不確定,因此採用c++模板機制。

源**如下:

#includeusing namespace std;

const int stacksize = 10 ;

template < typename t >

class seqstack //建構函式,初始化乙個空棧

~seqstack() {} //析構函式為空

void push(t x); //入棧操作,將元素x入棧

t pop(); //出棧操作,將棧頂元素彈出

t get() //取棧頂元素(不刪除)

bool empty() //判斷棧是否為空

bool full() //判斷是否棧滿

void print(); //遍歷操作

private:

t data[stacksize]; //存放棧元素的陣列

int top; //棧頂指標,為棧頂元素在陣列中的下標

};template< typename t >

void seqstack::push(t x)

{ if(full()){ //判斷是否棧滿入棧:

cout<

{ t x;

if(empty()){ //判斷是否棧空出棧

* 1.判斷是否棧空,若是則返回 -1,否則

* 2.先返回棧頂指標 top 指向的位置的值,再把棧頂指標 top 往下移一位

cout<

{ for( int i=0 ; i<=top ; i++)

{ cout

cout<

①總結在程式內定義物件為int型,將元素1~5按順序入棧。

通過呼叫成員函式,實現入棧、出棧、輸出等基本功能。

②執行結果如下:

5、總體收穫和不足,疑問等。

本次試驗較為簡單,因為實驗內容較少,且對書本知識掌握得有點熟悉。但本次試驗還是發現了自己的不足之處。經過改進、詢問同學,成功完成了實驗。

收穫頗豐。總的來說,我對理論知識有了更充分的理解,也能較大程度明白執行原理。

資料結構 鏈棧的實現(實驗3 2)

1 熟練掌棧的結構特點,掌握棧的順序儲存結構和實現。2 學會使用棧解決實際問題。二 實驗內容 1 自己確定結點的具體資料型別和問題規模,建立乙個鏈棧,實現棧的壓棧和出棧操作。三 實驗步驟 1 依據實驗內容分別說明實驗程式中用到的資料型別的定義 template typename t class li...

資料結構實驗 棧的順序儲存實現

題目 實驗二 棧 佇列操作 一 實驗目的 a 掌握棧這種資料結構特性及其主要儲存結構,並能在現實生活中靈活運用。b 掌握佇列這種資料結構特性及其主要儲存結構,並能在現實生活中靈活運用。c 了解和掌握遞迴程式設計的基本原理和方法。二 實驗內容 d 棧的順序儲存結構及實現。e 迴圈佇列 即佇列的順序儲存...

資料結構遍歷順序棧 資料結構 順序棧的實現

資料結構 順序棧的實現 1 快速開始 棧是一種遵循元素後進 push 先出 pop 規則的線性表,即最後加入的元素最先出來,它的實現可以用陣列或者鍊錶。它的特點如下 先出,先入後出。除了頭尾節點之外,每乙個元素有乙個前驅,有乙個後繼。2 實現棧 我們已經說過了,棧是一種線性表,故其底層是基於陣列或者...