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

2021-08-09 12:00:02 字數 2491 閱讀 9659

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

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

二、實驗內容

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

三、實驗步驟

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

template < typename t >

class linkstack //取棧頂元素

int empty() ; //判斷是否為空

private:

node *top;

};

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

2.1 建構函式

1.棧頂指標 top 置為 null 

2.建立乙個結點 node 置為 null 

3.迴圈: 

①.為結點 node 申請空間 

②.把陣列的值儲存在結點 node 的 data 域中 

③.把棧頂指標 top 指向的結點的位址儲存在 結點 node 的 next 域中 

④.棧頂指標 top 指向結點 node 

2.2析構函式: 

1.建立乙個結點 deletenode 置為 null 

2.迴圈: 

①.結點 deletenode 指向棧頂結點 

②.棧頂指標 top 指向棧頂結點的下乙個結點 

③.刪除棧頂結點

2.3入棧操作函式: 

1.建立乙個結點 s ,申請空間 

2.把 x 儲存在結點 s 的 data 域中 

3.結點 s 與原來的棧頂元素相連 

4.棧頂指標 top 指向結點 s ,即結點 s 成為棧頂元素

2.4出棧操作函式: 

1.判斷是否棧空,若是則丟擲「下溢」,否則 

2.建立乙個結點 p ,其指向棧頂結點 

3.建立乙個變數 x ,其記錄棧頂結點儲存的元素 

4.棧頂指標 top 指向棧頂結點的下乙個結點 

5.刪除棧頂結點 p  

6.返回棧頂結點儲存的元素 x

2.5輸出操作函式:按照順序,輸出棧元素

3、完整程式;

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

源**如下:

#includeusing namespace std;

template < typename t >

struct node

;template < typename t >

class linkstack

} ~linkstack()

void push(t x);

t pop();

void print();

t gettop()

int empty()

private:

node *top;

};

template bool linkstack::empty()
template < typename t >

void linkstack::push(t x)

template < typename t >

t linkstack::pop()

template void linkstack::print()

cout << node->data << endl;

}void main()

; cout << "建立物件:0、1、2、3、4 依次入棧 " << endl;

linkstacka(arr, 5);

cout << "遍歷棧內的元素:";

a.print();

cout << "出棧乙個元素" << a.pop() << "結果如下:" << endl;

a.print();

cout << "現在棧頂元素為:" << a.gettop();

cout << "入棧元素6~10:" << endl;

for (int i = 6; i <= 10; i++)

cout << "遍歷棧內的元素:";

a.print();

}

4、總結、執行結果和分析。

①總結在程式內定義物件為int型,將元素1~5按順序入棧。再出棧乙個元素,後6~10依次入棧。

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

②執行結果如下:

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

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

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

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

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

資料結構鏈棧實現

如題 這是一套完整的可執行的 需要讀者有一定的基礎去閱讀 語言是用c語言實現 在c 環境中編寫 在c 中可直接執行 在c語言中需要改部分標頭檔案和輸出語句 標頭檔案 這要是 的宣告部分 ifndef head define head include using namespace std typed...

鏈棧的資料結構以及鏈棧的實現

線性表有順序儲存結構和鏈式儲存結構,棧屬於線性表的一種,也具有順序儲存結構和鏈式儲存結構。對於棧的鏈式儲存結構,一般稱之為鏈棧。棧的插入和刪除只在棧頂進行操作,在單鏈表中,頭指標是單鏈表的必須元素 而在棧中,棧頂指標也是鏈棧的必須元素,且一般將棧頂放在單鏈表的頭部。鏈棧的結構 如下所示 定義資料結點...