實現(xiàn)棧和隊列的基本運行_第1頁
實現(xiàn)棧和隊列的基本運行_第2頁
實現(xiàn)棧和隊列的基本運行_第3頁
實現(xiàn)棧和隊列的基本運行_第4頁
實現(xiàn)棧和隊列的基本運行_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實現(xiàn)棧和隊列的基本運行石航 2009131214一、實驗目的      了解棧和隊列的結構特點及有關概念,掌握順序棧、鏈棧和循環(huán)隊列、鏈隊列的各種基本操作算法思想及其實現(xiàn)。 二、實驗內容編寫一個程序,實現(xiàn)棧的各種基本操作,并在此基礎上設計一個主程序完成如下功能:(1)初始化棧s(2)判斷棧s是否為空(3)次輸入元素a,b,c,d,e(4)判斷棧s是否為空(5)輸出棧長度(6)輸出從棧頂?shù)綏5椎脑?依棧元素的存儲特征進行)(7)輸出棧序列(8)判斷s是否為空循環(huán)隊列的基本操作實現(xiàn)(1)初始化隊列q(2)判斷循環(huán)隊列是否為空(3)次輸入元素a,b,c(4)

2、當前對頭元素出隊并將其輸出(5)輸出隊列q當前的元素個數(shù)(6)依次進隊列元素d,e,f(7)輸出隊列q的元素個數(shù)(8)輸出隊列序列(9)釋放隊列鏈隊各種基本操作的實現(xiàn)(1)初始化隊列q(2)判斷循環(huán)隊列是否為空(3)次輸入元素a,b,c(4)當前對頭元素出隊并將其輸出(5)輸出隊列q當前的元素個數(shù)(6)依次進隊列元素d,e,f(7)輸出隊列q的元素個數(shù)(8)輸出隊列序列(9)釋放隊列三、算法思想與算法描述棧的基本運算(1)InitStack(S)    構造一個空棧S。(2)StackEmpty(S)    判???。若S為空棧,則返回

3、TRUE,否則返回FALSE。(3)StackFull(S)    判棧滿。若S為滿棧,則返回TRUE,否則返回FALSE。(4)Push(S,x)    進棧。若棧S不滿,則將元素x插入S的棧頂。(5)Pop(S)    退棧。若棧S非空,則將S的棧頂元素刪去,并返回該元素。(6)StackTop(S)    取棧頂元素。若棧S非空,則返回棧頂元素,但 通隊列常會進行以下一些基本運算:(1)初始化:創(chuàng)建一個空隊列;(2)判空 :判斷一個已知隊列是否為空,若為空棧,

4、函數(shù)返回“真”或1,否則返回“假”或0 ;(3)判滿:判斷一個已知隊列是否為滿,若為滿,函數(shù)返回“真”或1,否則返回“假”或0;(4)進隊:在已知隊列的隊尾位置插入一個數(shù)據(jù)元素作為新的隊尾;(5)出隊:在已知隊列中刪除隊頭元素;(6)取隊頭:在已知隊列中取出隊頭元素的值;(7)置空:將一個已知隊列置空不改變棧的狀態(tài)。四、實驗步驟與算法實現(xiàn)寫完代碼之后,先生成,看看有沒有錯誤,有錯誤的話,就更正直到?jīng)]有錯誤,然后再調試,有時候可能調試的時候也會出現(xiàn)錯誤,這時就要檢查是否有邏輯上的錯誤了。把錯誤都更正了之后,就可以調試出程序了五、實驗測試及結果六、總結與體會 寫完實驗報告后,再從頭回顧一

5、遍,有助于我們對基礎知識的鞏固。附代碼:棧:11.cpp#include<stdio.h>#include<malloc.h>typedef char lucifertypedef struct slucifer data100;int top;a;void sa(a *&L)L=(a*)malloc(sizeof(a);L->top=-1;int sd(a *L)return(L->top=-1);int sq(a *L,lucifer e)if(L->top=100-1)return 0;L->top+;L->dataL->

6、;top=e;return 1;int swa* L)return(L->top+1);void sez(a* L)int i;for(i=L->top;i>=0;i-)printf("%c",L->datai);printf("n");int sz(a* &L,lucifer &e)if(L->top=-1)return 0;e=L->dataL->top;L->top-;return 1;void sx(a *&L)free(L);22.cpp#include<stdio.

7、h>#include<malloc.h>typedef char lucifer;typedef struct slucifer data100;int top;a;extern void sa(a *&L);extern int sd(a *L);extern int sq(a *L,lucifer e);extern int sw(a* L);extern void sse(a* L);extern int sz(a* &L,lucifer &e);extern void sx(a*&L);void main()lucifer e;a *h

8、;printf("初始化棧n");sa(h);printf("棧為%sn",(sd(h)?"空":"非空");printf("依次進棧元素:a,b,c,dn");sq(h,'a');sq(h,'b');sq (h,'c');sq(h,'d');printf("棧長為%dn",sw(h);printf("輸出棧中所有元素:");se(h);printf("出棧序列:");wh

9、ile(!sd(h)sz(h,e);printf("%c",e);printf("n");printf("釋放棧n");sx(h);隊列:11.cpp#include<stdio.h>#include<malloc.h>#define MAX 4typedef char random;typedef structrandom dataMAX;int front,rear;pa;void sa(pa*&Q)Q=(pa*)malloc(sizeof(pa);Q->front=Q->rear=0;

10、int sd(pa *Q)return(Q->front=Q->rear);int st(pa *Q, random e)if(Q->rear+1)%MAX=Q->front)return 0;Q->rear=(Q->rear+1)%MAX;Q->dataQ->rear=e;return 1;int sy(pa *Q)return (Q->rear-Q->front+MAX)%MAX;void su(pa *Q)int i;for(i=(Q->rear-Q->front+MAX)%MAX;i>=0;i-)printf

11、("%c",Q->datai);printf("n");int sx(pa* &Q, random &e)if(Q->front=Q->rear)return 0;Q->front=(Q->front+1)%MAX;e=Q->dataQ->front;return 1;void si(pa*&Q)free(Q);22.cpp#include<stdio.h>#include<malloc.h>#define MAX 4typedef char random;type

12、def structrandom dataMAX;int front,rear;pa;extern void sa(pa *&Q);extern int sd(pa*Q);extern int st(pa *Q, random e);extern int sy(pa *Q);extern void su(pa*Q);extern int sx(pa* &Q, random &e);extern void si(pa *&Q);void main()random e;pa *Q;printf("初始化隊列n");sa(Q);printf(&qu

13、ot;依次進隊元素:a,b,cn");if(st(Q,'a')=0)printf("隊滿不能進n");if(st(Q,'b')=0)printf("隊滿不能進n");if(st(Q,'c')=0)printf("隊滿不能進n");printf("隊列為%sn",(sd(Q)?"空":"非空");if(sx(Q,e)=0)printf("隊空不能出n");elseprintf("出隊元素為%cn",e);printf("隊列元素個數(shù)為%dn",sy(Q);printf("依次進隊元素:d,fn");if(st(Q,'d')=0)printf("隊滿不能進n");if(st(Q,'e')=0)printf(&q

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論