這個作業屬於哪個課程
這個作業要求在**
/homework/11296
這個作業的目標
掌握棧的結構特性及其入棧,出棧操作;掌握佇列的結構特性及其入隊、出隊的操作,掌握迴圈佇列的特點及其操作。
學號2018204283
一、實驗目的
1、掌握棧的結構特性及其入棧,出棧操作;
2、掌握佇列的結構特性及其入隊、出隊的操作,掌握迴圈佇列的特點及其操作。
二、實驗預習
說明以下概念
1、順序棧:
順序棧是棧的順序實現。順序棧是指利用順序儲存結構實現的棧。
2、鏈棧:
棧的鏈式儲存結構稱為鏈棧,它是運算受限的單鏈表,其插入和刪除操作僅限制在表頭位置上進行。
3、迴圈佇列:
將向量空間想象為乙個首尾相接的圓環,並稱這種向量為迴圈向量。儲存在其中的佇列稱為迴圈佇列。這種迴圈佇列可以以單鏈表的方式來在實際程式設計應用中來實現。
4、鏈隊
佇列的鏈式儲存結構簡稱為鏈佇列,它是限制在表頭刪除和表尾插入的單鏈表。
三、實驗內容和要求
1、閱讀下面程式,將函式push和函式pop補充完整。要求輸入元素序列1 2 3 4 5 e,執行結果如下所示。
#include#include#define error 0
#define ok 1
#define stack_int_size 10 /*儲存空間初始分配量*/
#define stackincrement 5 /*儲存空間分配增量*/
typedef int elemtype; /*定義元素的型別*/
typedef structsqstack;
int initstack(sqstack *s); /*構造空棧*/
int push(sqstack *s,elemtype e); /*入棧*/
int pop(sqstack *s,elemtype *e); /*出棧*/
int createstack(sqstack *s); /*建立棧*/
void printstack(sqstack *s); /*出棧並輸出棧中元素*/
int initstack(sqstack *s)/*initstack*/
int push(sqstack *s,elemtype e)
*s->top++=e;
return 1;
}/*push*/
int pop(sqstack *s,elemtype *e)else
return 0;
}/*pop*/
int createstack(sqstack *s)
printf("input data:(terminated by inputing a character)\n");
while(scanf("%d",&e))
push(s,e);
return ok;
}/*createstack*/
void printstack(sqstack *s)/*pop_and_print*/
int main()
演算法分析:輸入元素序列1 2 3 4 5,為什麼輸出序列為5 4 3 2 1?體現了棧的什麼特性?
體現了棧是只允許在表的一端進行操作的線性表並具有先進後出的特性。
2、在第1題的程式中,編寫乙個十進位制轉換為二進位制的數制轉換演算法函式(要求利用棧來實現),並驗證其正確性。
實現**
void conveshen (sqstack *s)
while (k驗證
3、閱讀並執行程式,並分析程式功能。
#include#include#include#define m 20
#define elemtype char
typedef struct
stacknode;
void init(stacknode *st);
void push(stacknode *st,elemtype x);
void pop(stacknode *st);
void init(stacknode *st)
void push(stacknode *st,elemtype x)
}void pop(stacknode *st)
int main()
輸入:2+((c-d)6-(f-7)a)/6
執行結果:
輸入:a-((c-d)*6-(s/3-x)/2
執行結果:
程式的基本功能:
判斷所輸入多項式的左右括號是否配對
以下為選做實驗:
4、設計演算法,將乙個表示式轉換為字尾表示式,並按照字尾表示式進行計算,得出表示式得結果。
實現**
5、假設以帶頭結點的迴圈鍊錶表示佇列,並且只設乙個指標指向隊尾結點(不設隊頭指標),試編寫相應的置空佇列、入佇列、出佇列的演算法。
實現**:
四、實驗小結
通過本次實驗,我對棧的結構特性及其入棧,出棧操作有了更深的了解,同時掌握了佇列的結構特性及其入隊、出隊的操作,迴圈佇列的特點及其操作。
五、評語
第四次實驗
一 問題及 檔名稱 陣列素數排序.cpp 作 者 周玉傑 完成日期 2017 年 4 月 10 日 版 本 號 v1.0 對任務及求解方法的描述部分 輸入描述 無 問題描述 將乙個陣列之中的素數存入另乙個陣列之中並使其排列 程式輸出 另乙個陣列排序前和排序後的樣子 問題分析 使用函式來分工 演算法設...
第四次實驗
1.檢視使用者和組檔案 進入 etc目錄,cd etc ls 顯示出 etc 中的檔案 cat passwd執行結果顯示出使用者帳號檔案 cat shadow,顯示使用者口令檔案 cat group,顯示使用者組帳號檔案 cat gshadow,顯示使用者組口令檔案 2.使用者和組帳戶的維護命令 增...
第四次實驗
part1陣列資料結構 1 修改1 2 修改2 part2 一維陣列的定義 初始化以及陣列元素的引用方法 1 一維陣列的宣告形式 陣列元素的型別說明符 陣列名稱 陣列的大小 2 初始化 宣告簡單變數時 int i 0 在定義陣列時 eg int b 4 part3 陣列作為函式引數 1 陣列元素作為...