




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上 數(shù)據(jù)結(jié)構(gòu) 實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱:實(shí)驗(yàn)五 隊(duì)列的基本操作一、實(shí)驗(yàn)?zāi)康模?、 掌握鏈接存儲(chǔ)隊(duì)列的進(jìn)隊(duì)和出隊(duì)等基本操作2、 掌握環(huán)行隊(duì)列的進(jìn)隊(duì)和出隊(duì)等基本操作3、 加深對(duì)隊(duì)列結(jié)構(gòu)的理解,逐步培養(yǎng)解決實(shí)際問(wèn)題的編程能力二、實(shí)驗(yàn)環(huán)境:計(jì)算機(jī),同學(xué),vc+三、實(shí)驗(yàn)內(nèi)容和要求:(一)基礎(chǔ)題1、編寫(xiě)鏈接隊(duì)列的基本操作函數(shù)() EnQueue( QUEUE *head, QUEUE *tail, int x )進(jìn)隊(duì)操作 () DeQueue( QUEUE *head, QUEUE *tail, int *cp )出隊(duì)操作() OutputQueue( QUEUE *head )輸出隊(duì)列中
2、元素 2、調(diào)用上述函數(shù)實(shí)現(xiàn)下列操作,操作步驟如下:(1)調(diào)用進(jìn)隊(duì)函數(shù)建立一個(gè)隊(duì)列;(2)讀取隊(duì)列的第一個(gè)元素;(3)從隊(duì)列中刪除元素;(4)輸出隊(duì)列中所有元素。注:每完成一個(gè)步驟,必須及時(shí)輸出隊(duì)列中元素,便于觀察操作結(jié)果。3、編寫(xiě)環(huán)型隊(duì)列的基本操作函數(shù)() EnQueue( int *queue, int maxn, int *head, int *tail, int x ) 進(jìn)隊(duì)操作, 返回1:隊(duì)滿 () DeQueue( int *queue, int maxn, int *head, int *tail, int *cp ) 出隊(duì)操作 返回1:隊(duì)空 () OutputQueue( int
3、 *queue, int maxn, int h, int t )輸出隊(duì)列中元素 4、調(diào)用上述函數(shù)實(shí)現(xiàn)下列操作,操作步驟如下:(1) 調(diào)用進(jìn)隊(duì)函數(shù)建立一個(gè)隊(duì)列;(2)讀取隊(duì)列的第一個(gè)元素;(3)從隊(duì)列中刪除元素;(4) 輸出隊(duì)列中所有元素。四、實(shí)驗(yàn)步驟:從網(wǎng)上把word 下載下來(lái),認(rèn)真的看題目,思考和同學(xué)討論在老師的幫助下,完成了題目。五、實(shí)驗(yàn)結(jié)果與分析(含程序、數(shù)據(jù)記錄及分析和實(shí)驗(yàn)總結(jié)等):基礎(chǔ)題一#include<stdio.h>#include<alloc.h>typedef struct queue /* 定義隊(duì)列結(jié)構(gòu) */int data; /* 隊(duì)列元素類型
4、為int */struct queue *link;QUEUE;void EnQueue( QUEUE *head, QUEUE *tail, int x )/* 進(jìn)隊(duì)操作 */QUEUE *p;p = (QUEUE *)malloc( sizeof(QUEUE) ); p->data = x;p->link = NULL;/* 隊(duì)尾指向空 */if( *head = NULL )/* 隊(duì)首為空,即為空隊(duì)列 */ *head = *tail = p;else (*tail)->link = p;/* 新單元進(jìn)隊(duì)列尾 */*tail = p;/* 隊(duì)尾指向新入隊(duì)單元 */ in
5、t DeQueue( QUEUE *head, QUEUE *tail, int *cp )/* 出隊(duì)操作 1:對(duì)空 */QUEUE *p; p = *head;if( *head = NULL )/* 隊(duì)空 */return 1;*cp = (*head)->data;*head =(*head)->link;if( *head = NULL ) /* 隊(duì)首為空,隊(duì)尾也為空 */*tail = NULL;free( p );/* 釋放單元 */ return 0;void OutputQueue( QUEUE *head )/* 輸出隊(duì)列中元素 */while (head !=
6、NULL ) printf( "%d ", head->data );head = head->link; printf( "n" );void main()QUEUE *head, *tail;int op, i;head = tail = NULL; /* 將隊(duì)列頭和尾置為空 */ while( 1 )printf( "請(qǐng)選擇操作,1:進(jìn)隊(duì) 2:出隊(duì) 0:退出 " );fflush( stdin );/* 清空標(biāo)準(zhǔn)輸入緩沖區(qū) */scanf( "%d", &op );switch( op )
7、 case 0:/* 退出 */return 0;case 1:/* 進(jìn)隊(duì) */printf( "請(qǐng)輸入進(jìn)隊(duì)元素:" ); scanf( "%d", &i ); EnQueue( &head, &tail, i );printf( "隊(duì)內(nèi)元素為:n" );OutputQueue( head );break;case 2:/* 出隊(duì) */if(DeQueue( &head, &tail, &i )= 0 ) /* 出隊(duì)成功 */printf( "出隊(duì)元素為: %d , 隊(duì)內(nèi)元素為
8、:n" , i );OutputQueue( head );elseprintf( "隊(duì)空n" );break;基礎(chǔ)題 二#include<stdio.h>#include<alloc.h>#define MAXN 11/* 定義環(huán)行順序隊(duì)列的存儲(chǔ)長(zhǎng)度 */int EnQueue( int *queue, int maxn, int *head, int *tail, int x )/* 進(jìn)隊(duì)操作, 返回1:隊(duì)滿 */if( *tail + 1 ) % maxn= *head )/* 隊(duì)尾指針趕上隊(duì)首指針, 隊(duì)滿 */return 1; *
9、tail =( *tail + 1 ) % maxn ;/* 隊(duì)尾指針+1 */queue*tail = x;/* 元素入對(duì)尾 */ return 0;int DeQueue( int *queue, int maxn, int *head, int *tail, int *cp )/* 出隊(duì)操作 返回1:隊(duì)空 */if( *head = *tail )/* 隊(duì)首=隊(duì)尾, 表明隊(duì)列為空 */return 1;*head = ( *head + 1 ) % maxn;/* 隊(duì)首指針+1 */ *cp = queue*head;/* 取出隊(duì)首元素 */ return 0;void OutputQu
10、eue( int *queue, int maxn, int h, int t )/* 輸出隊(duì)列中元素 */while(h != t ) /* */h = ( h + 1 ) % maxn;printf( "%d ", queueh ); printf( "n" );void main()int qMAXN;/* 假設(shè)環(huán)行隊(duì)列的元素類型為int */int q_h=0, q_t=0;/* 初始化隊(duì)首,隊(duì)尾指針為0 */ int op, i; while( 1 )printf( "請(qǐng)選擇操作,1:進(jìn)隊(duì) 2:出隊(duì) 0:退出 " );ffl
11、ush( stdin );/* 清空標(biāo)準(zhǔn)輸入緩沖區(qū) */scanf( "%d", &op );switch( op ) case 0:/* 退出 */return 0;case 1:/* 進(jìn)隊(duì) */printf( "請(qǐng)輸入進(jìn)隊(duì)元素:" ); scanf( "%d", &i );if(EnQueue( q, MAXN, &q_h, &q_t, i )!= 0 )printf( "隊(duì)列滿n" ); else printf( "入隊(duì)成功, 隊(duì)內(nèi)元素為:n" );Outp
12、utQueue( q, MAXN, q_h, q_t ); break;case 2:/* 出隊(duì) */if(DeQueue( q, MAXN, &q_h, &q_t, &i )= 0 ) /* 出隊(duì)成功 */printf( "出隊(duì)元素為: %d , 隊(duì)內(nèi)元素為:n" , i );OutputQueue( q, MAXN, q_h, q_t );elseprintf( "隊(duì)空n" );break;提高題一#include<stdio.h>#include<stdlib.h>#include<alloc.
13、h>typedef struct int arrive;/* 病人到達(dá)時(shí)間 */int treat;/* 病人處理時(shí)間 */PATIENT;typedef struct queue /* 定義隊(duì)列結(jié)構(gòu) */PATIENT data;/* 隊(duì)列元素類型為int */struct queue *link;QUEUE;void EnQueue( QUEUE *head, QUEUE *tail, PATIENT x )/* 進(jìn)隊(duì)操作 */QUEUE *p;p = (QUEUE *)malloc( sizeof(QUEUE) );p->data = x;p->link = NULL;
14、/* 隊(duì)尾指向空 */if( *head = NULL )/* 隊(duì)首為空,即為空隊(duì)列 */*head = *tail = p;else (*tail)->link = p;/* 新單元進(jìn)隊(duì)列尾 */*tail = p;/* 隊(duì)尾指向新入隊(duì)單元 */ int DeQueue( QUEUE *head, QUEUE *tail, PATIENT *cp )/* 出隊(duì)操作 1:對(duì)空 */QUEUE *p; p = *head;if( *head = NULL )/* 隊(duì)空 */return 1;*cp = (*head)->data;*head = (*head)->link;if
15、( *head = NULL ) /* 隊(duì)首為空,隊(duì)尾也為空 */*tail = NULL;free( p );/* 釋放單元 */ return 0;void OutputQueue( QUEUE *head )/* 輸出隊(duì)列中元素 */while(head != NULL ) printf( "到達(dá)時(shí)間: %d 處理時(shí)間: %dn ", head->data.arrive, head->data.treat );head = head->link;void InitData( PATIENT *pa, int n )/* 生成病人到達(dá)及處理時(shí)間的隨機(jī)數(shù)
16、列 */int parr = 0;/* 前一個(gè)病人到達(dá)的時(shí)間 */ int i;for( i = 0; i < n; i+ ) pai.arrive = parr + rand( 15 );/* 假設(shè)病人到達(dá)的時(shí)間間隔為 014 */pai.treat = rand( 9 ) + 1;/* 假設(shè)醫(yī)生處理時(shí)間為 19 */parr = pai.arrive; printf( "第%d個(gè)病人到達(dá)時(shí)間為%d處理時(shí)間為%dn", i+1, parr, pai.treat ); void main()QUEUE *head, *tail; PATIENT *p, curr;/*
17、 病人到達(dá)及處理時(shí)間信息, 當(dāng)前出隊(duì)病人信息 */int n, i, finish;int nowtime;/* 時(shí)鐘 */int dwait, pwait;/* 醫(yī)生累計(jì)等待時(shí)間, 病人累計(jì)等待時(shí)間 */head = tail = NULL;/* 將隊(duì)列頭和尾置為空 */ while( 1 )n = 0; nowtime = dwait = pwait = 0;printf( "請(qǐng)輸入病人總數(shù)(120),= 0:退出 " );scanf( "%d", &n );if( n = 0 )/* 退出 */return 0;if( n > 20
18、| n < 0 ) continue; if( ( p = ( PATIENT *)malloc( n * sizeof( PATIENT ) ) ) = NULL ) printf( "內(nèi)存申請(qǐng)錯(cuò)誤n" ); return 1; InitData( p, n ); /* 生成病人到達(dá)及處理時(shí)間的隨機(jī)數(shù)列 */for( i = 0;i < n | head != NULL ; ) /* 病人到達(dá)未結(jié)束或還有等待, 處理 */if( head = NULL ) /* 等待隊(duì)列為空 */if(pi.arrive - nowtime > 0)/* 病人到達(dá)時(shí)間與上次處理時(shí)間遲 */ dwait += pi.arrive - nowtime;/* 累計(jì)醫(yī)生等待時(shí)間 */nowtime = pi.arrive
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 油田開(kāi)發(fā)項(xiàng)目資金申請(qǐng)報(bào)告(范文參考)
- 汽車配套產(chǎn)業(yè)基地項(xiàng)目投標(biāo)書(shū)(參考模板)
- xx片區(qū)城鄉(xiāng)供水一體化項(xiàng)目投標(biāo)書(shū)
- 《GB41930-2022低水平放射性廢物包特性鑒定水泥固化體》深度解析
- 四川省遂寧市2024-2025學(xué)年高一下學(xué)期期末考試歷史試卷
- 2025年汽車儀表相關(guān)計(jì)數(shù)儀表項(xiàng)目合作計(jì)劃書(shū)
- 2025年醫(yī)療物聯(lián)網(wǎng)技術(shù)在患者生命體征監(jiān)測(cè)中的應(yīng)用前景報(bào)告
- 2025健身房租賃合同
- 教育技術(shù)的倫理準(zhǔn)則與實(shí)踐探索
- 航空發(fā)動(dòng)機(jī)維修技術(shù)創(chuàng)新在成本控制中的應(yīng)用與優(yōu)化策略報(bào)告
- 生產(chǎn)現(xiàn)場(chǎng)變化點(diǎn)管理行動(dòng)指南
- 中國(guó)古典小說(shuō)巔峰:四大名著鑒賞學(xué)習(xí)通課后章節(jié)答案期末考試題庫(kù)2023年
- 模擬電子技術(shù)基礎(chǔ)知到章節(jié)答案智慧樹(shù)2023年蘭州石化職業(yè)技術(shù)大學(xué)
- JJF 1915-2021傾角儀校準(zhǔn)規(guī)范
- GA/T 1310-2016法庭科學(xué)筆跡鑒定意見(jiàn)規(guī)范
- 2023年本科招生考試
- 新入職護(hù)士培訓(xùn)考試試題及答案
- 《消防安全技術(shù)實(shí)務(wù)》課本完整版
- 北師大版七年級(jí)數(shù)學(xué)下冊(cè) 與信息技術(shù)相融合的數(shù)學(xué)教學(xué)案例 教案
- 鈍針穿刺法臨床應(yīng)用護(hù)理
- 水產(chǎn)養(yǎng)殖行業(yè)報(bào)告
評(píng)論
0/150
提交評(píng)論