資料結構實驗二題目

2022-03-09 11:31:50 字數 2078 閱讀 3505

資料結構實驗報告

實驗名稱: 實驗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個 用順序...