資料結構實驗報告二 棧和佇列

2021-10-13 13:11:19 字數 4459 閱讀 1134

1、掌握棧的結構特性及其入棧,出棧操作;

2、掌握佇列的結構特性及其入隊、出隊的操作,掌握迴圈佇列的特點及其操作。

/*儲存空間初始分配量*/

#define stackincrement 5

/*儲存空間分配增量*/

typedef

int elemtype;

/*定義元素的型別*/

typedef

struct

sqstack;

intinitstack

(sqstack *s)

;/*構造空棧*/

intpush

(sqstack *s,elemtype e)

;/*入棧*/

intpop

(sqstack *s,elemtype *e)

;/*出棧*/

intcreatestack

(sqstack *s)

;/*建立棧*/

void

printstack

(sqstack *s)

;/*出棧並輸出棧中元素*/

intinitstack

(sqstack *s)

/*initstack*/

intpush

(sqstack *s,elemtype e)

*s->top=e;

s->top++

;return ok;

}/*push*/

intpop

(sqstack *s,elemtype *e)

}/*pop*/

intcreatestack

(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*/

intmain()

演算法分析:輸入元素序列1 2 3 4 5,為什麼輸出序列為5 4 3 2 1?體現了棧的什麼特性?

先進後出(後進先出)

實現**

#include

#include

#define error 0

#define ok 1

#define stack_int_size 10

/*儲存空間初始分配量*/

#define stackincrement 5

/*儲存空間分配增量*/

typedef

int elemtype;

/*定義元素的型別*/

typedef

struct

sqstack;

intinitstack

(sqstack *s)

;/*構造空棧*/

intpush

(sqstack *s,elemtype e)

;/*入棧*/

intpop

(sqstack *s,elemtype *e)

;/*出棧*/

intcreatestack

(sqstack *s)

;/*建立棧*/

void

printstack

(sqstack *s)

;/*出棧並輸出棧中元素*/

intinitstack

(sqstack *s)

/*initstack*/

intpush

(sqstack *s,elemtype e)

*s->top=e;

s->top++

;return ok;

}/*push*/

intpop

(sqstack *s,elemtype *e)

}/*pop*/

intcreatestack

(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*/

intisempty

(sqstack *s)

void

conversion

(int n)

while(!

isempty

(&s))}

intmain()

驗證

正確

#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)

intmain()

if(sp-

>top==0)

printf

("'('match')'!\n");

else

printf

("'('not match')'!\n");

return0;

}

輸入:2+((c-d)*6-(f-7)*a)/6

執行結果:』(『match』)』!

輸入:a-((c-d)*6-(s/3-x)/2

執行結果:』(『not match』)』!

程式的基本功能:判斷給定表示式中所包含的括號是否正確配對出現實現**:

#include

#include

#define true 1

#define false 0

#define qelemtype int

typedef

struct node

node,

*linkqnode;

typedef

struct

linkqueue;

void

initlinkqueue

(linkqueue &q)

intislqempty

(linkqueue &q)

intenlinkqueue

(linkqueue &q,qelemtype x)

else

return false;

}int

delinkqueue

(linkqueue &q,qelemtype *x)

intmain()

printf

("\n輸入字母『e』開始出列\n");

getchar()

;while(~

scanf

("%c"

,&a))if

(delinkqueue

(q,&tt)

)printf

("元素%d成功出列\n"

,tt);if

(islqempty

(q))

else

printf

("該佇列不為空!\n");

printf

("\n輸入字母'e'繼續出列\n");

}return0;

}

《資料結構》實驗三 棧和佇列實驗 (實驗報告)

一 實驗目的 鞏固棧和佇列資料結構,學會運用棧和佇列。1.回顧棧和佇列的邏輯結構和受限操作特點,棧和佇列的物理儲存結構和常見操作。2.學習運用棧和佇列的知識來解決實際問題。3.進一步鞏固程式除錯方法。4.進一步鞏固模板程式設計。二 實驗內容 1.自己選擇順序或鏈式儲存結構,定義乙個空棧類,並定義入棧...

資料結構實驗報告 資料結構實驗報告

使用c語言中的陣列,實現線性表中的順序結構儲存的查詢 刪除操作。1 初始線性表通過陣列 迴圈 scanf語句實現輸入任意個整數。2 刪除操作的實現,任意輸入乙個要刪除的整數,找到這個元素,將此元素之後的所有元素逐個前移一位,實現刪除操作。3 要求以上2步操作可以重複執行。4 例如 刪除操作執行結果大...

資料結構實驗報告

1 掌握佇列儲存結構的表示和實現方法。2 掌握佇列的入隊和出隊等基本操作的演算法實現。3 了解佇列在解決實際問題中的簡單應用。1 建立順序迴圈佇列,並在順序迴圈佇列上實現入隊 出隊基本操作 驗證性內容 2 建立迴圈鏈佇列,並在迴圈鏈佇列上實現入隊 出隊基本操作 設計性內容 3 實現鍵盤輸入迴圈緩衝區...