順序棧 鏈棧 迴圈佇列 鏈隊基本操作的實現

2021-10-03 04:51:38 字數 3133 閱讀 2003

一、實驗學時: 2學時

二、實驗目的

三、實驗內容

順序棧的建立、取棧頂元素、入棧、出棧

佇列的建立、取隊中元素、入隊、出隊、迴圈佇列中入隊、出隊操作

四、主要儀器裝置及耗材

五、實驗步驟

分析問題

寫出演算法

編制程式

上機除錯

分析結果

六、程式清單

1.順序棧

#include

#include

#define ok 0

#define error -1

#define overflow -2

#define maxsize 100

//順序棧儲存空間的初始分配量

//建立順序棧

typedef

struct

sqstack;

//初始化順序棧

intinitstack

(sqstack &s)

//壓棧

intpush

(sqstack &s,

int e)

//彈棧

intpop

(sqstack &s,

int&e)

//取棧頂元素

intgettop

(sqstack s)

intmain()

//取棧頂元素

printf

("棧頂元素為%d\n"

,gettop

(s))

;while

(s.top!=s.base)

}

2.鏈棧
#include

#include

#define ok 0

#define error -1

#define overflow -2

//建立鏈棧

typedef

struct stacknode

stacknode,

*linkstack;

//初始化

intinitstack

(linkstack &s)

//入棧

intpush

(linkstack &s,

int e)

//出棧

intpop

(linkstack &s,

int&e)

//取棧頂元素

intgettop

(linkstack &s)

intmain()

//取棧頂元素

printf

("棧頂元素為:%d\n"

,gettop

(s))

;while

(s!=

null

)}

3.迴圈佇列
#include

#include

#define maxsize 6

//建立順序佇列

typedef

struct

sqqueue;

//初始化順序佇列

intinitqueue

(sqqueue &q)

//入隊

intenqueue

(sqqueue &q,

int e)

//出隊

intdequeue

(sqqueue &q,

int&e)

//取隊頭元素

intgethead

(sqqueue q)

//求迴圈佇列長度

intqueuelength

(sqqueue q)

//胡亂寫的...

void

f1(sqqueue &q,

int&num)

if(num==0)

printf

("檢測到0,入隊結束!\n請輸入要出隊的元素個數:");

int count,i;

scanf

("%d"

,&count);if

(count>

queuelength

(q))

printf

("佇列中元素不足...\n");

for(i=

0;i)printf

("請輸入要入隊的東東:");

scanf

("%d"

,&num);f1

(q,num);}

intmain()

4.鏈隊
#include

#include

#define maxsize 6

//建立佇列的鏈式儲存結構

typedef

struct qnode

qnode,

*queueptr;

typedef

struct

linkqueue;

//初始化

intinitqueue

(linkqueue &q)

//入隊

intenqueue

(linkqueue &q,

int e)

//出隊

intdequeue

(linkqueue &q,

int&e)

//取隊頭元素

intgethead

(linkqueue q)

intmain()

七、執行結果及分析

1.順序棧

2.鏈棧

3.迴圈佇列

4.鏈隊

和迴圈佇列的測試差不多

八、小總結

1.順序棧

2.鏈棧

3.迴圈佇列

4.鏈隊

順序棧 鏈棧 順序隊和鏈隊小結

順序棧和順序隊的儲存結構都為順序儲存,鏈棧和鏈隊的儲存結構為鏈式儲存。順序棧和順序隊為受約束的順序表 可以看成與陣列類似 鏈棧和鏈隊和單鏈表沒有什麼區別。如何寫出這些相應的程式 呢?本人認為有以下幾點 1 清楚順序棧 順序隊 鏈棧和鏈隊的結構及其基本性質,如 隊列為 先進先出 棧為 先進後出 棧需要...

順序棧 鏈棧基本操作

include stdafx.h include stdio.h include stdlib.h define stack max size 7 int stackdata stack max size define stack max size 14 int stackdata stack ma...

順序棧 鏈棧基本操作

include stdafx.h include stdio.h include stdlib.h define stack max size 7 int stackdata stack max size define stack max size 14 int stackdata stack ma...