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