實(shí)驗(yàn)2_棧與隊(duì)列的應(yīng)用_第1頁
實(shí)驗(yàn)2_棧與隊(duì)列的應(yīng)用_第2頁
實(shí)驗(yàn)2_棧與隊(duì)列的應(yīng)用_第3頁
實(shí)驗(yàn)2_棧與隊(duì)列的應(yīng)用_第4頁
實(shí)驗(yàn)2_棧與隊(duì)列的應(yīng)用_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)二:棧與隊(duì)列的應(yīng)用學(xué)時(shí):4學(xué)時(shí)實(shí)驗(yàn)?zāi)康模赫莆諚Ec隊(duì)列的基本結(jié)構(gòu)和操作方法,并能利用其解決實(shí)際問題。實(shí)驗(yàn)內(nèi)容: (任選一題,有能力的同學(xué)可以兩題都做)一、輸入一個(gè)表達(dá)式(4+2*4#),利用棧求表達(dá)式的值。(只對整數(shù)求值,目前只考慮操作數(shù)為個(gè)位數(shù)的情況,即24+34*34這種情況不考慮)提示:1,先實(shí)現(xiàn)棧的基本操作:初始化,入棧,出棧等。 2,首先將一個(gè)中綴式變成后綴式,然后,對后綴式求值。 3,可用順序?;蛘哝湕?shí)現(xiàn)。二、編寫一個(gè)程序,反映病人到醫(yī)院看病排隊(duì)看醫(yī)生的情況,在病人排隊(duì)過程中,主要重復(fù)兩件事:(1)病人到達(dá)診室,將病歷交給護(hù)士,排到等待隊(duì)列中侯診(2)護(hù)士從等待隊(duì)列中取出下一位

2、病人的病歷,改病人進(jìn)入診室就診要求:模擬病人等待就診這一過程,程序采用菜單式,其選項(xiàng)和功能說明如下:(1) 排隊(duì)輸入排隊(duì)病人的病歷號,加入到病人排隊(duì)隊(duì)列中(2) 就診病人排隊(duì)隊(duì)列中最前面的病人就診,將其從隊(duì)列中刪除(3) 查看排隊(duì)從隊(duì)首到隊(duì)尾理出所有的排隊(duì)病人的病歷號(4) 不在排隊(duì),余下依次就診從隊(duì)首到隊(duì)尾列出所有的排隊(duì)病人的病歷號,并退出運(yùn)行(5) 下班退出運(yùn)行(6) 上班初始化排隊(duì)隊(duì)列。提示:1,先實(shí)現(xiàn)隊(duì)列的基本操作:初始化,入隊(duì),出隊(duì)等。 2,在main()程序中,模擬病人看病這個(gè)過程。給出菜單選擇,進(jìn)行相應(yīng)的操作3,可用順序隊(duì)列或者鏈隊(duì)列實(shí)現(xiàn)??蓞⒖既缦麓a:順序棧的實(shí)現(xiàn)ch32_s

3、stack.c#include stdio.h#define StackSize 100typedef int ElemType;typedef struct ElemType elemStackSize; int top;SqStack;InitStack(SqStack *pS) pS-top=0; /* top指向棧頂?shù)纳弦粋€(gè)元素 */int Push(SqStack *pS,ElemType e) if (pS-top=StackSize-1) /* 棧滿 */ return 0; pS-elempS-top=e; pS-top=pS-top+1; return 1;int Pop(S

4、qStack *pS,ElemType* pe) if (pS-top=0) /* ???*/ return 0; pS-top = pS-top - 1; *pe = pS-elempS-top; return 1;main() SqStack S; ElemType e; int N; InitStack(&S); N=1348; while(N) e = N % 8; Push(&S,e); N = N/8; while(Pop(&S,&e) printf(%d,e); getch();鏈棧的實(shí)現(xiàn)ch3_lstack.c#include stdio.h/* 數(shù)據(jù)元素的類型 */typed

5、ef int ElemType;/* 節(jié)點(diǎn)的類型(包括頭節(jié)點(diǎn)) */typedef struct Node ElemType elem; struct Node *next;SNode;/* 初始化,頭節(jié)點(diǎn) */InitStack(SNode* pS) pS-next=NULL;/* 入棧:在頭節(jié)點(diǎn)之后插入一個(gè)新節(jié)點(diǎn) */Push(SNode* pS,ElemType e) SNode* node; node = (SNode*)malloc(sizeof(SNode); node-elem = e; node-next = pS-next; pS-next = node;int Pop(SN

6、ode* pS,ElemType* pe) SNode* node; if (pS-next=NULL) return 0; *pe = pS-next-elem; node=pS-next; pS-next=node-next; free(node); return 1; main() SNode S; ElemType e; int N; InitStack(&S); N=1348; while(N) e = N % 8; Push(&S,e); N = N/8; while(Pop(&S,&e) printf(%d,e); getch();隊(duì)列的順序?qū)崿F(xiàn)(循環(huán)隊(duì)列)ch3_squeue.

7、c/*隊(duì)列的順序?qū)崿F(xiàn)(循環(huán)隊(duì)列)author: Shirleydate: 2011.3*/#define MaxSize 100typedef int ElemType;typedef struct ElemType elemMaxSize; int front,rear;SqQueue;InitQueue(SqQueue* pQ) pQ-front=pQ-rear=0;int EnQueue(SqQueue* pQ,ElemType e) if (pQ-rear+1)%MaxSize = pQ-front) /* 隊(duì)滿 */ return 0;

8、pQ-elempQ-rear = e; pQ-rear = (pQ-rear+1)%MaxSize; return 1;int DeQueue(SqQueue* pQ,ElemType* pe) if (pQ-rear = pQ-front) /* 隊(duì)空 */ return 0; *pe = pQ-elempQ-front; pQ-front = (pQ-front+1)%MaxSize; return 1;main() SqQueue Q; ElemType e; InitQueue(&Q); e=2; EnQueue(&Q,e); e=5; EnQueue(&Q,e); e=3; EnQu

9、eue(&Q,e); while(DeQueue(&Q,&e) printf(n%d,e); getch();隊(duì)列的鏈?zhǔn)綄?shí)現(xiàn)ch3_lqueue.c/*隊(duì)列的鏈?zhǔn)綄?shí)現(xiàn)author: Shirleydate: 2011.3*/#include stdio.h#define MaxSize 100typedef int ElemType;typedef struct QNode ElemType elem; struct QNode * next;QNode;typedef struct QNode* front; QNode* rear;LinkQu

10、eue;InitQueue(LinkQueue* pQ) QNode* node; node=(QNode*)malloc(sizeof(QNode); /*分配一個(gè)頭節(jié)點(diǎn)*/ node-next = NULL; pQ-front=pQ-rear=node;int EnQueue(LinkQueue* pQ,ElemType e) QNode* node; node=(QNode*)malloc(sizeof(QNode); node-elem = e; node-next = NULL; pQ-rear-next = node; pQ-rear = node; return 1;int De

11、Queue(LinkQueue* pQ,ElemType* pe) QNode* node; if (pQ-rear = pQ-front) /* 隊(duì)空 */ return 0; node = pQ-front-next; *pe = node-elem; pQ-front-next = node-next; /* 注意有個(gè)頭節(jié)點(diǎn),當(dāng)最后一個(gè)元素出隊(duì)時(shí),記得更新尾指針 */ if (pQ-rear=node) pQ-rear=pQ-front; free(node); return 1;DestoryQueue(LinkQueue* pQ) while(pQ-front) pQ-rear=pQ-front-next; free(pQ-front); pQ-front = pQ-

溫馨提示

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

評論

0/150

提交評論