《數(shù)據(jù)結(jié)構(gòu)》課程實(shí)驗(yàn)實(shí)訓(xùn)報(bào)告_第1頁(yè)
《數(shù)據(jù)結(jié)構(gòu)》課程實(shí)驗(yàn)實(shí)訓(xùn)報(bào)告_第2頁(yè)
《數(shù)據(jù)結(jié)構(gòu)》課程實(shí)驗(yàn)實(shí)訓(xùn)報(bào)告_第3頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、數(shù)據(jù)結(jié)構(gòu)課程實(shí)驗(yàn)實(shí)訓(xùn)報(bào)告實(shí)驗(yàn)名稱棧與隊(duì)列實(shí)驗(yàn)序號(hào)3學(xué)號(hào)14302043姓名陳前方班級(jí)信管本二實(shí)驗(yàn)日期2015.11.15指導(dǎo)教師金照林成績(jī)、實(shí)驗(yàn)?zāi)康暮鸵竽康模?掌握堆棧和隊(duì)列數(shù)據(jù)結(jié)構(gòu)描述,學(xué)會(huì)針對(duì)堆棧和隊(duì)列的基本操作。要求: 掌握 C 語言結(jié)構(gòu)化程序設(shè)計(jì)思想,結(jié)構(gòu)數(shù)據(jù)類型,指針數(shù)據(jù)類型。、實(shí)驗(yàn)具體內(nèi)容及步驟1. 實(shí)現(xiàn)課本中鏈?zhǔn)蕉褩#?p64-p66)的基本操作,并編制主函數(shù)實(shí)際運(yùn)行驗(yàn)證其正確性。2. 鏈?zhǔn)蕉褩TO(shè)計(jì)。要求:(1) 用鏈?zhǔn)蕉褩TO(shè)計(jì)實(shí)現(xiàn)堆棧, 堆棧的操作集合包括: 初始化、 非空否、入棧、出棧、 取棧頂數(shù)據(jù)元素。( 2) 設(shè)計(jì)一個(gè)主函數(shù)對(duì)鏈?zhǔn)蕉褩_M(jìn)行測(cè)試。測(cè)試方法為依次把數(shù)據(jù)元素1

2、、2、3、4、5 入棧,然后出棧并在屏幕上顯示出棧的數(shù)據(jù)元素。( 3) 定義數(shù)據(jù)元素的數(shù)據(jù)類型為如下形式的結(jié)構(gòu)體:typedef structchar taskName10;/ 任務(wù)名int taskNo;/ 任務(wù)號(hào)DataType;首先設(shè)計(jì)一個(gè)包含 5 個(gè)數(shù)據(jù)的測(cè)試數(shù)據(jù), 然后設(shè)計(jì)一個(gè)主函數(shù)對(duì)鏈?zhǔn)蕉褩_M(jìn)行測(cè) 試。測(cè)試的方法為:依次把 5 個(gè)元素入棧,然后出棧并在屏幕上顯示出棧的數(shù)據(jù)3. 實(shí)現(xiàn)課本中順序循環(huán)隊(duì)列 ( p75-p77 )的基本操作, 并編制主函數(shù)實(shí)際運(yùn)行驗(yàn)證其正確性。4. 對(duì)順序循環(huán)隊(duì)列,常規(guī)的方法是使用隊(duì)尾指針和隊(duì)頭指針,隊(duì)尾指針用于指示當(dāng)前的隊(duì) 尾位置下標(biāo),隊(duì)頭指針用于指示當(dāng)

3、前的隊(duì)頭位置下標(biāo)?,F(xiàn)要求:( 1) 設(shè)計(jì)一個(gè)使用隊(duì)頭指針和計(jì)數(shù)器的順序循環(huán)隊(duì)列抽象數(shù)據(jù)類型,其中操作包括:初始化、入隊(duì)列、出隊(duì)列、取隊(duì)頭元素和判斷隊(duì)列是否為空。( 2) 設(shè)計(jì)一個(gè)測(cè)試主函數(shù)進(jìn)行測(cè)試。三、實(shí)驗(yàn)結(jié)果與分析(程序代碼按序粘貼在下面,并將運(yùn)行結(jié)果截圖)1#include#includetypedef int DataType;typedef struct snodeDataType data;struct snode *next; LSNode; /* 初始化操作: */void StackInitiate(LSNode *head)/* 初始化帶頭結(jié)點(diǎn)鏈?zhǔn)蕉褩?*/if(*head

4、= (LSNode *)malloc(sizeof(LSNode) = NULL) exit(1);(*head)-next = NULL; /* 判非空操作: */int StackNotEmpty(LSNode *head) /* 判堆棧是否非空,非空返回 1;空返回 0*/if(head-next = NULL) return 0; else return 1; /* 入棧操作: */int StackPush(LSNode *head, DataType x) /* 把數(shù)據(jù)元素 x 插入鏈?zhǔn)蕉褩?head 的棧頂作為 新的棧頂 */ LSNode *p; if(p = (LSNode

5、*)malloc(sizeof(LSNode) = NULL) printf( 內(nèi)存空間不足無法插入 ! n); return 0; p-data = x; p-next = head-next; /* 新結(jié)點(diǎn)鏈入棧頂 */ head-next = p; /*新結(jié)點(diǎn)成為新的棧頂 */return 1; /* 出棧操作: */int StackPop(LSNode *head, DataType *d) /* 出棧并把棧頂元素由參數(shù) d 帶回 */ LSNode *p = head-next; if(p = NULL) printf( 堆棧已空出錯(cuò)! );return 0;head-next =

6、 p-next; /* 刪除原棧頂結(jié)點(diǎn) */*d = p-data; /* 原棧頂結(jié)點(diǎn)元素賦予 d*/free(p); /* 釋放原棧頂結(jié)點(diǎn)內(nèi)存空間 */return 1; /* 取棧頂數(shù)據(jù)元素操作: */int StackTop(LSNode *head, DataType *d) /*取棧頂元素并把棧頂元素由參數(shù) d 帶回 */LSNode *p = head-next;if(p = NULL)printf( 堆棧已空出錯(cuò)! );return 0;*d = p-data;return 1; /* 撤銷 */void Destroy(LSNode *head)LSNode *p, *p1;p

7、 = head;while(p != NULL)p1 = p;p = p-next;free(p1);void main(void)LSNode *myStack;int i, x;StackInitiate(&myStack); for(i=0;i5;i+)if(StackPush(myStack,i+1)=0)printf(error!n); return;if(StackTop(myStack,&x)=0)printf(error!n);return;elseprintf(The element of local top is :%dn,x); printf(The sequence o

8、f outing elements is:n); while(StackNotEmpty(myStack) StackPop(myStack, &x);printf(%d , x);printf(n);Destroy(myStack);2#include #include #define MaxStackSize 100 typedef int DataType;typedef structDataType stackMaxStackSize; int top; SeqStack; /* 初始化操作: */ void StackInitiate(SeqStack *S) /* 初始化帶頭結(jié)點(diǎn)鏈

9、式堆棧 */S-top=0;int StackNotEmpty(SeqStack S)if(S.toptop=MaxStackSize)printf( 堆棧已滿無法插入 !n);return 0;elseS-stackS-top=x;S-top+;return 1;int StackPop(SeqStack *S, DataType *d)if(S-toptop-;*d=S-stackS-top;return 1;int StackTop(SeqStack S, DataType *d)if(S.top=0)printf( 堆棧已空 !n);return 0;else*d=S.stackS.t

10、op-1;return 1;void main(void)SeqStack myStack;int i,x;StackInitiate(&myStack); for(i=0;irear=0;Q-front=0;Q-count=0;int QueueNotEmpty(SeqCQueue Q)if(Q.count!=0)return 1;elsereturn 0;int QueueAppend(SeqCQueue *Q,DataType x)if(Q-count0&Q-rear=Q-front)printf( 隊(duì)列已滿無法插入! n); return 0;elseQ-queueQ-rear=x;Q

11、-rear=(Q-rear+1)%MaxQueueSize;Q-count+;return 1;int QueueDelete(SeqCQueue *Q,DataType *d)if(Q-count=0)printf( 隊(duì)列已空無數(shù)據(jù)元素出隊(duì)列 !n); return 0;else*d=Q-queueQ-front; Q-front=(Q-front+1)%MaxQueueSize; Q-count-;return 1;int QueueGet(SeqCQueue Q,DataType *d)if(Q.count=0)printf( 隊(duì)列已空無數(shù)據(jù)可取 n);return 0;else*d=Q

12、.queueQ.front;return 1;void main(void)SeqCQueue myQueue;int i,x;QueueuInitiate(&myQueue); for(i=0;irear=0;Q-front=0;Q-count=0;int QueueNotEmpty(SeqCQueue Q)if(Q.front!=Q.rear) return 1;elsereturn 0;int QueueAppend(SeqCQueue *Q,DataType x) if(Q-front=(Q-rear+1)%MaxQueueSize) printf( 隊(duì)列已滿無法插入! n); ret

13、urn 0;elseQ-queueQ-rear=x; Q-rear=(Q-rear+1)%MaxQueueSize; Q-count+;return 1;int QueueDelete(SeqCQueue *Q,DataType *d) if(Q-front=Q-rear) printf( 隊(duì)列已空無數(shù)據(jù)元素出隊(duì)列 !n); return 0;else*d=Q-queueQ-front; Q-front=(Q-front+1)%MaxQueueSize; Q-count-;return 1;int QueueGet(SeqCQueue Q,DataType *d)if(Q.front=Q.rear)printf( 隊(duì)列已空無數(shù)據(jù)可取 n); return 0;else*d=Q.queueQ.front;return 1;void main(void)SeqCQueue myQueue;int i,x;QueueuInitiate(&myQueue); for(i=0;i5;i+)if(QueueAppend(&myQueue,i+1)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論