數(shù)據(jù)結(jié)構(gòu)實(shí)訓(xùn)_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)訓(xùn)_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)訓(xùn)_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)訓(xùn)_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)訓(xùn)_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余17頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)實(shí)訓(xùn)數(shù)據(jù)結(jié)構(gòu)實(shí)訓(xùn) 課程課程設(shè)計(jì)說(shuō)明書(shū)設(shè)計(jì)題目:隊(duì)列的基本操作專 業(yè):班級(jí)學(xué)號(hào):姓 名:指導(dǎo)教師:2019 年12 月2 日教務(wù)處印制數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)實(shí)訓(xùn)課程設(shè)計(jì)任務(wù)書(shū)課題名稱:隊(duì)列的基本操作設(shè)計(jì)內(nèi)容:1.編寫(xiě)鏈接隊(duì)列的基本操作函數(shù)2. 使用鏈接隊(duì)列的函數(shù)實(shí)現(xiàn)操作3. 招聘模擬技術(shù)條件或要求:C+ 6.0指導(dǎo)教師(簽名): 教研室主任(簽名): 開(kāi)題日期:2019 年12 月2日完成日期:2019 年12 月5 日目錄一、目的及要求 4二、需求分析 41、實(shí)現(xiàn)要求 42、設(shè)計(jì)思路4三、實(shí)驗(yàn)內(nèi)容41、編寫(xiě)鏈接隊(duì)列的基本操作函數(shù)。 42、調(diào)用上述函數(shù)實(shí)現(xiàn)下列操作,操作步驟如下

2、: 43、流程圖53.1 隊(duì)列流程圖53.2 招聘模擬流程圖64、程序代碼94.1程序運(yùn)行結(jié)果115、招聘模擬程序 125.1程序運(yùn)行結(jié)果17四、總結(jié)18、目的及要求1、 掌握鏈接存儲(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)題的編程能力二、需求分析1、實(shí)現(xiàn)要求要求程序輸出每個(gè)工種的錄用者信息(編號(hào)、成績(jī)) 者的信息(編號(hào)、成績(jī))2、設(shè)計(jì)思路程序中按應(yīng)聘者成績(jī)從高到低的順序進(jìn)行排隊(duì)錄取。如果在第一5并按其第二志 愿隊(duì)列中落選,便將他的成績(jī)扣去 5分后重新排隊(duì),志愿考慮錄取。程序?yàn)槊總€(gè)工種保留一個(gè)錄取者的有序隊(duì)列。錄取處

3、理循環(huán)直至招聘額滿或已對(duì)全部應(yīng)聘者都做了錄用處理。三、實(shí)驗(yàn)內(nèi)容1、編寫(xiě)鏈接隊(duì)列的基本操作函數(shù)。2、調(diào)用上述函數(shù)實(shí)現(xiàn)下列操作,操作步驟如下:(1)、調(diào)用進(jìn)隊(duì)函數(shù)建立一個(gè)隊(duì)列;數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)實(shí)訓(xùn)(2)、讀取隊(duì)列的第一個(gè)元素;(3)、從隊(duì)列中刪除元素;(4)、輸出隊(duì)列中所有元素。3、流程圖3.1 隊(duì)列流程圖h Md-h Md退出恚境)數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)實(shí)訓(xùn)3.2 招聘模擬流程圖void OutPutStu(STU *p) 輸出應(yīng)聘人員有序隊(duì)列中編號(hào)和成績(jī)開(kāi)始f口Cp ! = NULL 二printf('%dp->norp'>total!);ENDvoid Free

4、Stu(STU*p) 釋放應(yīng)聘人員空間開(kāi)始STU q;whileCp!=NULL)q=*P;*p=*p)->nextfree(q);ENDvoid Insert(STU*p,STU*u)安排出成績(jī)從大到小順序插隊(duì)數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)實(shí)訓(xùn)int InitJob(JOB *h,int n,int *all)隨機(jī)生成工種信息向仃。廿萬(wàn)%|二比Mntfg工件總團(tuán)工粗號(hào)(出那駟他)AQ' .、判斷申泊內(nèi)存虻否為空1 . 1¥ J二、X N例inti內(nèi)第 出唱演W:rel urn-1:帕巾=0靛吧+) pp.lmt rsnrfom(10+i, pij.(Mjnt=Ctpi 國(guó) zM

5、UlL:all *-pi.lmt: 輸出itlT利用整人敢 由出總招聘人激*p;rEtwn a _ENDint InitStu(STU *h,int n, int m)隨機(jī)生成應(yīng)聘人員信息程SIUt inti;p附螭欣康捐磁赧想2加)師胛內(nèi)存申娥口吸retum 4p->no=i;p-> 疑 叩-> sortnr 市 ndom (2Q1); p- k口二加dom飾 國(guó)人員第一志恩 p,河gmdom網(wǎng);©!店S二馥po?iR;黜(弱,鰥副旗2)謂用I帙她p): printf(V7 return Q;END11數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)實(shí)訓(xùn)void main()射門出+l

6、63;刖,加曲肌11,曜<=肌吐刖,Eter可:師毗融律尊”領(lǐng)田謝3sarffW4m):rPlUT(”p1ut(fr閣時(shí)foitinue,kii晶曲diMd,h用( Mretunt麗:氤融.珈A同市 XtPiiKhgaE:Ahile(dll >Q a& h“d-NULLJp'liead;he4d=b«Ad->nt:i 一口 >/p >?i;""-j-一rz(i.<ouii1<r2|*.lnit一一"丫 一 一閃ni.count+;In 電 1(也 f 則,Ml1rp);dlL'; cont

7、inue; y,-np->next=ower;6WT-P;(.ontinut?;d >jortm -DEMAfiKr添工神已第一法檔i-1;此第二一;*Inaeft he.dpk 里新人 UKFen j = OJ < in. + *)pn rtfHn工碑由出的月情硒i謫;Rffl Out PulSluMiprints,n*kpfiMK、溶譜人員*;Out Puts tu(head)rOutPulSluCovti.rrwStu(&ill,&tu):伯白 VtufSlhoad:;Fr-pS-fi,4 nv產(chǎn)中frw敏喃-END#數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)實(shí)訓(xùn)4、程序代碼

8、#include "stdafx.h"#include <iostream.h>#include <stdio.h>#include<stdlib.h>/#include <alloc.h>typedef struct queueint data;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=NU

9、LL;/*隊(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, int*cp) /* 出隊(duì)操作 1:隊(duì)空*/ QUEUE*p;p=*head;if(*head = NULL) /* 隊(duì)空*/return 1;9數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)實(shí)訓(xùn)*cp = (*head)->data;*head =(*head)->link;if(*head=NULL)/*隊(duì)首為空

10、,隊(duì)尾也為空*/*tail=NULL; /* 釋放單元*/free(p);return 0;/*輸出隊(duì)列中元素*/void OutputQueue(QUEUE*head)while (head != 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(

11、stdin);/*清空標(biāo)準(zhǔn)輸入緩沖區(qū)*/ scanf( "%d", &op );switch(op)case 0: /*® 出 */return;case 1: /*® 隊(duì) */A io1M數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)實(shí)訓(xùn)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(DeQueu

12、e(&head, &tail, &i)=0)/* 出隊(duì)成功 */printf("出隊(duì)元素為:%d,隊(duì)內(nèi)元素為:n" ,i); OutputQueue(head);elseprintf("隊(duì)空n");break;4.1程序運(yùn)行結(jié)果數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)實(shí)訓(xùn)5、招聘模擬程序#include<stdio.h>#include<stdlib.h>#include<malloc.h>#define DEMARK 5/*按第二批錄用的扣分成績(jī)*/typedef struct stu/*定義招聘人員信息結(jié)構(gòu)*/

13、int no,total,z2,sortm,zi;/*編號(hào),總成績(jī),志愿,排除成績(jī),錄取志愿號(hào) */ struct stu *next;STU;/*結(jié)構(gòu)變量名*/typedef struct jop/*定義錄用計(jì)劃信息結(jié)構(gòu) */int lmt,count;/*計(jì)劃錄用人數(shù),已錄用人數(shù)*/STU *stu;/*錄用者有序隊(duì)列*/JOB;STU *head=NULL,*over=NULL;/初始化頭指針和尾指針int all;int random(int n) 定義 random 函數(shù)int rn=0;rn=rand()%n;return rn;void OutPutStu(STU *p)輸出應(yīng)聘

14、人員有序隊(duì)列中的編號(hào)和成績(jī)for(;p!=NULL;p=p->next) 判斷 p 指針是否為空 printf("%d(%d)t",p->no,p->total); 輸出成員的編號(hào)和成績(jī)void FreeStu(STU *p)/釋放應(yīng)聘人員空間STU *q;while(*p!=NULL)*p=(*p)->next;free(q);void Insert(STU *p,STU *u)/*按排除成績(jī)從大到小順序插隊(duì)*/171MSTU *v,*q;插隊(duì)元素的前后元素指針for(q=*p;q!=NULL;v=q,q=q->next)if(q->s

15、ortm<u->sortm)/隊(duì)中工人的成績(jī)插入元素成績(jī)break;if(q=*p)插入到隊(duì)首*p=u;else/為隊(duì)首插入v->next=u;u->next=q;/新元素的后繼元素指針int InitJob(JOB *h,int n,int *all)/*隨機(jī)生成工種信息 */int i;JOB *p;*all=0;printf("工種信息工種號(hào)(計(jì)劃招聘人數(shù))n");if(p=(JOB*)malloc(n*sizeof(JOB)=NULL)printf("內(nèi)存申請(qǐng)錯(cuò)誤!n");return -1;for(i=0;i<n;

16、i+)pi.lmt=random(10)+1;假設(shè)工種招聘人數(shù)為 110/pi.count=0;pi.stu=NULL;*all+=pi.lmt;數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)實(shí)訓(xùn)printf("%d(%d)t",i,pi.lmt);printf("n 總招聘人數(shù)%dn",*all);*h=p;return 0;int InitStu(STU *h,int n,int m)/*隨機(jī)生成應(yīng)聘人員信息*/STU *p;int i;printf("應(yīng)聘人員信息編號(hào),成績(jī),志愿1,志愿2n");for(i=0;i<n;i+)if(p=(STU*)

17、malloc(sizeof(STU)=NULL)printf("內(nèi)存申請(qǐng)錯(cuò)誤!n");return -1;p->no=i;p->total=p->sortm=random(201);p->z0=random(m);/* 應(yīng)聘人員第一志愿0m-1*/p->z1=random(m);/* 應(yīng)聘人員第一志愿0m-1*/p->zi=0;錄取志愿初始化為0,即第一志愿printf("%d,%3d,%d%dt",i,p->total,p->z0,p->z1);Insert(h,p);printf("n&

18、quot;);return 0;void main()int m;工種總數(shù),編號(hào)為 0m-1int n;應(yīng)聘人員總數(shù)JOB *rz;int all;計(jì)劃招聘人員總數(shù)STU *head=NULL,*over=NULL;/ 應(yīng)聘人員隊(duì)列,落聘人員隊(duì)列STU *p;int i;while (1)m=n=0;printf("請(qǐng)輸入工種總數(shù)(120),=0:退出");scanf("%d",&m);if(m=0)/ 退出return;if(m>20|m<0)continue;if(InitJob(&rz,m,&all)!=0)生成

19、工種信息return;printf("n請(qǐng)輸入應(yīng)聘人員總數(shù)(5400),=0:退出)scanf("%d",&n);if(n=0)/ 退出return;if(n<5|n>400)free(rz);/釋放應(yīng)聘人員信息continue;if(InitStu(&head,n,m)!=0) 生成應(yīng)聘人員信息return;printf("n應(yīng)聘人員隊(duì)列n");OutPutStu(head);while(all>0&&head!=NULL)/當(dāng)人員沒(méi)有招滿且隊(duì)列不為空p=head;取應(yīng)聘人員隊(duì)首指針head=

20、head->next;隊(duì)首指針下移i=p->zp->zi;/取該應(yīng)聘人員的應(yīng)聘工種號(hào)19數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)實(shí)訓(xùn)if(rzi.count<rzi.lmt)該工種人員沒(méi)招滿rzi.count+;Insert(&rzi.stu,p);all-;continue;if(p->zi>=1)p->next=over;/該工人入落聘者隊(duì)列over=p;continue;p->sortm-=DEMARK; 該工種已招滿,工人分?jǐn)?shù)降檔p->zi=1;該工人改為第二志愿Insert(&head,p);/ 重新入隊(duì)for(i=0;i<m;

21、i+)printf("n 工種%d招聘情況 n",i);OutPutStu(rzi.stu);printf("n");printf("n 落聘人員 n");OutPutStu(head);OutPutStu(over);printf("n");for(i=0;i<m;i+)/*釋放人員工種招聘人員空間*/FreeStu(&rzi.stu);FreeStu(&head);/*釋放落聘人員空間*/FreeStu(&over);/*釋放落聘人員空間*/free(rz);/釋放工種信息空間1M數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)實(shí)訓(xùn)5.1程序運(yùn)行結(jié)果塞舞. l :U sersCJD5ktC'PV'LXsybLiebijg5y6.eKe詰諭入種總款門7201=。詛由1匚坤信息I(檸與讓,劃招用人it卜0(2)通招聘人敢組而輸入鹿曬人村總靠仿F

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論