資料結構實驗報告
實驗名稱: 實驗2——棧和佇列
學生姓名:
班級:班內序號:
學號:日期: 2023年11月8日
1. 實驗要求
實驗目的:
進一步掌握指標、模板類、異常處理的使用
掌握棧的操作的實現方法
掌握佇列的操作的實現方法
學習使用棧解決實際問題的能力
學習使用佇列解決實際問題的能力
實驗內容:
根據棧和佇列的抽象資料型別的定義,按要求實現乙個棧或乙個佇列。
要求:1、 實現乙個共享棧
2、 實現乙個鏈棧
3、 實現乙個迴圈佇列
4、 實現乙個鏈佇列
編寫測試main()函式測試線性表的正確性。
2. 程式分析
本次實驗,要進行共享棧(順序棧)、鏈棧、迴圈佇列、鏈佇列的程式程式設計,要求對所學知識有乙個系統的掌握。
2.1 儲存結構
(1)共享棧
共享棧實際上是乙個順序棧,為了節省儲存空間,常常把兩個棧的元素放入乙個陣列空間裡,因此命名為共享棧
(2)鏈棧
鏈棧可以看作是單鏈表的簡化,只不過與單鏈表不同的是,鏈棧只能從棧頂輸入輸出,因此對鏈棧的操作更為簡單。其演算法分析與單鏈表所查無幾。
(3)迴圈佇列
為解決假溢位,將儲存佇列的陣列看成是頭尾相接的迴圈結構。因此有了迴圈佇列。佇列與棧不同的是,佇列是頭出尾進。
(4)鏈佇列
鏈佇列的方式與單鏈表相差不多,只不過,鏈佇列依然是頭出尾進,比單鏈表顯得更受限制。
2.2 關鍵演算法分析
(1)共享棧
[1]置空兩個指標。top1=-1,top2=stacksize;
[2]將陣列壓入棧空間。
[2.1]判斷top1+1==top2,若相等,扔出棧溢位,否則,執行以下兩步
[2.2]壓入棧1時,top1++,將資料置入data[top1]
[2.3]壓入棧2時,top2--,將資料置入data[top2]
[3]將陣列刪除
[3.1]刪除棧1的資料,top1--,返回data[top1++],刪除data[top1++]
[3.2]刪除棧2的資料,top2++,返回data[top2--],刪除data[top2--]
[4]得到棧頂。返回data[top1]或者data[top2]即可
(2)鏈棧
(3)迴圈佇列
[1]入隊
[1.1]將元素e插入迴圈佇列中隊尾元素的下乙個儲存空間
[1.2]修改隊尾指標,根據迴圈累計公式計算出其新位置
[2]出隊
[2.1]判斷頭尾指標,如果兩者相等,擲出下溢,否則,執行[2.2]
[2.2]修改隊頭指標,根據迴圈累計公式計算出其新位置演算法描述
(4)鏈佇列
演算法分析
[1]入隊操作
[1.1]新申請結點p,將值賦給結點的資料域
[1.2]將rear的next域指向p
[1.3]將rear指向rear的next域
[1.4]指空rear的next域
[2]出隊操作
[2.1] 儲存隊頭元素指標,即圖中操作①;
[2.2] 如果為空隊,丟擲異常;
[2.3] 將原隊頭元素出鏈,即操作②;
[2.4] 儲存隊頭資料,即操作③
[2.5] 釋放原隊頭元素,即操作④
[2.6] 若佇列變為空佇列,修改隊尾指標,即操作⑤;
[2.7] 返回出隊資料
2.3 其他
執行截圖:
3. 程式執行結果
4. 總結
最開始時不知道該怎樣把函式在main函式中表示出來,考慮了很多辦法。在編共享棧時,很鍛鍊了我的解決問題的能力。在除錯時將棧和佇列的建構函式放入了switch內,結果無法執行,最終除錯很久解決了這個問題,而且在定義null時#define null 0多輸入了乙個分號,結果出現內聯檔案的執行錯誤,整了一晚上才發現這個問題。
這次實驗,加入了選擇結構,以至於程式看起來更有序,使用者使用起來更加靈活,目的性更強。
由於有了單鏈表的基礎,做起來相對容易一點,因為期中考試臨近,所以選擇了乙個較為簡單的題目,下一次一定要挑戰一下更難的題目。
資料結構實驗題目
實驗一線性表 一 多項式相加 問題描述 一元多項式相加是通過鍵盤輸入兩個形如p0 p1x1 p2x2 pnxn 的多項式,經過程式運算後在螢幕上輸出他們的相加和。二 約瑟夫 josephus 環 問題描述 設編號為1 2 n的n個人圍坐一圈,約定編號為k 1 k n 的人從1開始報數,數到m的那個人...
北郵資料結構實驗二題目
2008級資料結構實驗報告 實驗名稱 實驗二棧和佇列 學生姓名 班級 2008211113 班內序號 學號 日期 2009年11月8日 1 實驗要求 通過選擇下面五個題目之一進行實現,掌握如下內容 進一步掌握指標 模板類 異常處理的使用 掌握棧的操作的實現方法 掌握佇列的操作的實現方法 學習使用棧解...
資料結構上機實驗題目2019
第一次上機 1 書p19 adt list 基本操作12個 1 用順序儲存結構實現 2 用鏈式儲存結構實現 2 習p18 2.21 2.22 3 習p18 2.25 2.26 4 習p18 2.29 2.30 5 習p19 2.38 第二次上機 1 書p45 adt stack 基本操作9個 用順序...