數(shù)據(jù)結(jié)構(gòu)的課件實驗四隊列的存儲結(jié)構(gòu)和基本操作_第1頁
數(shù)據(jù)結(jié)構(gòu)的課件實驗四隊列的存儲結(jié)構(gòu)和基本操作_第2頁
數(shù)據(jù)結(jié)構(gòu)的課件實驗四隊列的存儲結(jié)構(gòu)和基本操作_第3頁
數(shù)據(jù)結(jié)構(gòu)的課件實驗四隊列的存儲結(jié)構(gòu)和基本操作_第4頁
全文預覽已結(jié)束

下載本文檔

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

文檔簡介

實驗四 隊列的存儲結(jié)構(gòu)和基本操作實驗內(nèi)容 1.鏈式隊列的存儲結(jié)構(gòu)C語言中的鏈式隊列存儲結(jié)構(gòu)描述: 鏈式隊列的存儲結(jié)構(gòu)typedef struct QNodeQElemType data; /*隊列中元素*/Struct QNode *next; Qnode,*QueuePtr; /*隊列中頭、尾指針存儲類型定義*/typedef structQueuePtr front,rear; /*對頭、對尾指針*/ LinkQueue; /*鏈式隊列數(shù)據(jù)類型*/2. 鏈式隊列的基本操作 (1)初始化操作:構(gòu)造一個空鏈式隊列Q。(2)銷毀操作:釋放隊列空間。(3)清空操作:將鏈式隊列設置為空隊列。(5)進隊列操作:在鏈式隊列隊尾插入一個新的元素作為新的隊尾元素。(6)出隊列操作:將對頭元素從隊列中刪除,并將結(jié)果返回。3. 鏈式隊列操作實現(xiàn)的操作步驟(1)實現(xiàn)將鏈式隊列的存儲結(jié)構(gòu)和基本操作程序代碼。(2)實現(xiàn)main主函數(shù)。4.程序代碼完整清單#include #include #define MaxSize 5typedef char ElemType;typedef struct qnodeElemType data;struct qnode *next; QNode;typedef structQNode *front;QNode *rear; LiQueue;/基本操作函數(shù)聲明 void InitQueue(LiQueue *&q); /*初始化鏈式隊列*/ void ClearQueue(LiQueue *&q); /*銷毀鏈式隊列*/ int QueueLength(LiQueue *q); /*鏈式隊列長度*/ int QueueEmpty(LiQueue *q); /*清空鏈式隊列*/ void enQueue(LiQueue *&q,ElemType e); /*入鏈式隊列*/ int deQueue(LiQueue *&q,ElemType &e); /*出鏈式隊列*/void main()ElemType e;LiQueue *q;printf(1)初始化鏈隊qn);InitQueue(q);printf(2)依次進鏈隊元素a,b,cn);enQueue(q,a);enQueue(q,b);enQueue(q,c);printf(3)鏈隊為%sn,(QueueEmpty(q)?空:非空);if (deQueue(q,e)=0) printf(隊空,不能出隊n);elseprintf(4)出隊一個元素%cn,e);printf(5)鏈隊q的元素個數(shù):%dn,QueueLength(q);printf(6)依次進鏈隊元素d,e,fn);enQueue(q,d);enQueue(q,e);enQueue(q,f);printf(7)鏈隊q的元素個數(shù):%dn,QueueLength(q);printf(8)出鏈隊序列:);while (!QueueEmpty(q)deQueue(q,e);printf(%c ,e);printf(n);printf(9)釋放鏈隊n);ClearQueue(q);void InitQueue(LiQueue *&q) /*初始化鏈式隊列 操作結(jié)果:構(gòu)造一個空隊列Q*/q=(LiQueue *)malloc(sizeof(LiQueue);q-front=q-rear=NULL;void ClearQueue(LiQueue *&q) /*釋放鏈式隊列 操作結(jié)果:釋放*/ /* 鏈式隊列結(jié)點空間*/QNode *p=q-front,*r;if (p!=NULL)/*釋放數(shù)據(jù)結(jié)點占用空間*/r=p-next;while (r!=NULL)free(p);p=r;r=p-next;free(q); /*釋放頭結(jié)點占用空間*/int QueueLength(LiQueue *q) /*求鏈式隊列長度 操作結(jié)果:返*/ /* 回鏈式隊列中結(jié)點個數(shù)*/int n=0;QNode *p=q-front;while (p!=NULL)n+;p=p-next;return(n);int QueueEmpty(LiQueue *q) /*清空鏈式隊列 操作結(jié)果:將鏈式隊為空*/ /* 列置鏈式隊列*/if (q-rear=NULL)return 1;elsereturn 0;void enQueue(LiQueue *&q,ElemType e) /*入隊列 操作結(jié)果:插入元素e為Q的*/ /* 新的隊尾元素*/QNode *s; s=(QNode *)malloc(sizeof(QNode);s-data=e;s-next=NULL; if (q-rear=NULL)/*若鏈隊為空,則新結(jié)點是隊首結(jié)點又是隊尾結(jié)點*/q-front=q-rear=s;elseq-rear-next=s; /*將*s結(jié)點鏈到隊尾,rear指向它*/q-rear=s;int deQueue(LiQueue *&q,ElemType &e) /*出隊列 操作結(jié)果:若隊列不空,刪*/ /*除Q的隊列元素,用e返回其值,并返*/QNode *t; /* 回1,否則返回0*/if (q-rear=NULL)/*隊列為空*/return 0;if (q-front=q-rear) /*隊列中只有一個結(jié)點時*/t=q-front;q-front=q-rear=NULL;else/*隊列中有多個結(jié)點時*/t=q-front;q-front=q-front-next;e=t-data; free(t);retu

溫馨提示

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

評論

0/150

提交評論