还剩20页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
合肥晋院HEFEI UNIVERSITY.计算机科学与技术系实验报告专业名称计算机科学与技术课程名称数据结构与算法____________项目名称实验三队列实验______________班级___________________学号1______________________________姓名___________________________同组人员__________无__________________________实验日期LinkQu e ue*Add LinkQu e u e*q,in t x〃入队{oLinkLis t*p;op=Li nk List a11o c size o f LinkList;叩一〉data=x;p-n ext二NULL;笛-〉r ear-n ext=p;q—〉rear=p;o r et u r n q;Link Queue*D e1e teLin k Qu e ue*q{“/出队LinkLi s t*p;i f!Qu e u eEmpt y q{p=q—〉fro n t-ne x t;q一〉front—next=p一n ext;oifp-n ext=NULL q-rea r=q-fro n t;free p;r e t u rn q;del s e print fq u e ue Empty;3用di s play函数输出链队列元素void d ispla yLinkQueue*q〃输出链队列的元素{L ink Li s t*p;p=q-front—n ext;ifp!=NULL{叩ri ntf〃输出链队元素〃;whilep!=NULL8{sprint f〃%2d〃,p-data;叩二p—n ext;}oelse printf〃\n链队为空”;⑷在主函数中先往队列里输入5个元素,输出,看入队是否成功,然后出队,再调用di splay函数看是否出队int mainint i,y=0;SetQueue;建立空链队列b displ a y q;ep r int f\n请输入5个元素”;ofor i=0;i5;i++Q//入队5个元素sc anf%d,y;o Add q,y;displayq;fori=0;i5;i++»〃把5个元素出队o D e leteq;}000dis p la yq;〃看是否出队成功o r e t ur n0;}、调试分析4编译无错误、用户使用说明5程序名为在文件夹里面运行环境clas s12e xe,DEBUG Visual c++
6.0o、测试结果6旌队为空一请输入5个兀素12345输出维的元素12345旌队为空Press anykey tocontinue、附录7#in c1ude std i oh ftinclude s tdl ibo h#def i n ema x len10type def str u c tnode{int data;struct node*next;}L i n kList;type def s tru c t{Li nkLi st*fro n t,*rear;}L i nkQu e ue;Li n kQueue*q;//建立一个空链队列LinkQu eue*SetQu e ue{q=L inkQ,u e u e*ma1Io csizeofL inkQ u e u e;q—front=Li nkL ist*m a11o csi z e o fL i nkList;q—f r ont-nex t=NU L L;—〉eq—rear=q front;re t urn q;//判断队列是否为空i n t QueueEmptyLi nkQueue*q{i fq—rear==q-fron t r e t u rn1;e Ise r e t u rn0;〃入队LinkQu eue*Ad dLinkQueue*q,in tx{o LinkList*p;叩=;LinkList*malloc si ze ofL inkListp—d at a=x;p—ne xt=NU LL;q—rear-next=p;q-rear=p;return q;{〃出队LinkQu e ue*De1ete Lin k Qu e ue*qLi nkList*p;if!QueueEm p ty q{p=q-f ro n t—next;q—fro n t-next=p—next;i fp—n ext=N ULLq—r e ar=q—fr o nt;free p;r etu r n q;els eprint fqueu eEmpty;}Lin k List*p;—〉p=q fro n t-nex t;ifp!=NULL“输出链队元素”;printf{whilep!=N ULL3°printf%2d,p—d ata;o p=p—n ext;°链队为空”;else printf\ni n t m a in{int i,y=0;〃建立链队列S etQ u eu e;displayq;°请输入个元素;Mpr i ntf\n5〈〃入队个元素f or i=0;i5;i++5o scanf%d〃,y;Ad dq,y;d i spl a yq;,//把个元素出队ofori=0;i5;i++oo5{D e1et eq;;〃看是否出队成功d ispla yqre turn0;实验题目2写出下列程序段的输出结果,并通过程序运行来验证
1.问题分析完成该实验需要以下4个子任务错误!定义一个循环队列的存储结构,定义队列的基本算法错误!定义一个print函数实现程序错误!通过队列的基本算法实现队列的出队操作错误!在主函数中完成操作测试数据设计如下2o概要设计为了实现上述程序功能,需要:错误!声明一个循环队列错误!定义出队列的基本算法,错误!在主函数调用print函数看是否出队.3本程序包含8个函数1主函数ma i n
2.置空队I nitQue u e3o判对空Que u eEm pt y4o判队满:QueueFull
5.入队:Add6o出队:Del e te
7.di sp1a y
8.G e t H e ad各函数关系如下Ge t HeadI ni tQu eueQ u eueEmptyoQue u eFu11Add Ma i n汨e1e teprint
5、详细设计M ain实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码.1循环队列#def i ne maxie n10typ edefstru ctgcha rdata[m axlen];o oint front;o i nt rear;}Seq Queue;2队列基本算法SeqQ u eu e*InitQ u eue Seq Queue*q〃建立一个空循环队列{oq=S e qQ u eue*mall ocsize of SeqQueue;q-f ront=0;q—rear=0;ret u rn q;}int QueueFul1Seq Queu e*q{//判断队列是否为满oif q-〉fr o nt=q-r ear+1%max1e nr e tur n1;e Ise return0;}int Que u eEmpty Se q Q u eu e*q{〃判断队列是否为空if q-r ear==q—frontret urn1;oel s er etur n0;}_ch a r GetHead Se q Queue*q{//取栈顶元素oif!Queue Empt yq or etur n q—d at a[q-f rent+1%max1e n];e1se p r intf〃queu eEmpty;void Add SeqQueue*q,char x//入队oif!Q u eueF u11q{q-r ear=q-〉rear+l%ma xlen;gq—data[q一〉r ear]=x;e1s ep r i ntfn q u eue f u11”;}void D el ete SeqQue ue*q{//出队oif!Que u eEm pty qo q一〉fron t=q-fr on t+1%maxlen;else p ri n tfqueue Empty;}3用print函数验证程序void print SeqQueue*q o{char x,y,t;ox=,e,;y=,c,;oAddq,h;Mddq,r,;抓d dq,y;x二G etHe adq;Deleteq;Add q,x;x=GetH ead q;oDelet eq;Add q,a;owhi1e Que ueEmpty q==0{y=G etHead q;^Del ete q;pr i ntf〃%c〃,y;}p tint f%c,x;}4在主函数中调用print函数验证程序i n t mainSe q Queue*q;q=I ni tQueu eq;pr i n tq;r eturn0;、调试分析4编译无错误、用户使用说明5程序名为在文件夹里面运行环境c lass
2.exe,DEBUG VisualC++
60.、测试结果6charPress anykey tocontinue、附录7#inc1u de std i oh o#i nc1ude stdliboh#d efinemaxle n10t ype defstru ct{,c har da t a[m axlen];;;i nt f ronto int r ear;}SeqQue ue//建立一个空循环队列S eq Q ueue*lnitQu eueS e qQu e ue*q;o q=SeqQue ue*ma llocsizeofS e qQueueo q-f ront=0;,〉;q—rear=O;retur nq in t QueueFull SeqQueue*q{〉・dif q—f ront==q re a r+1%ma xlen;o r etur n1o eI s ereturn0;},//判断队列是否为空int QueueEmptyS eq Queue*q{o,if q-rea r==q-f ro ntre tur n1;;e Iseretu rn0}〃取栈顶元素c har G e tHeadSe qQ ueue*q{i f!Qu eueE mptyq3ret u rn q—d ata Eq-front+1%m axlen];;o else pri ntfq ueue E mpty}//入队vo id Ad dS eqQu eue*q,ch ar x,if!QueueFul1q{q-rear=q—r ear+l%maxle n;q—d ata[q-rear]=x;;}e Ise printf Nq ueue full}〃出队void Delet eS e qQueue*q{!QueueEmptyqddq-front=q-f ront+1%m ax1en;;else prin tfHque ueEmpty}vo idprintSeqQueue*qch arx,y,t;,;;x=e y=c卜;Ad dq,3Ad dqj;Ad dq,y;3=GetHead q;Dele teq;;Ad dqxz;x=GetHeadq;3D eleteq Addq/aO;while Queu e Emptyq==0{y=Ge tHeadq;Deleteq;;pr intf%c”,y叩ri ntf%c”,x;}i ntm ainSeqQue ue*q;fiq=l ni t Queu eq;printq;o ret urn0;实验三队列实验实验题目建立含有若干个元素的循环队列和链队列,并分别实现循环队列和链队列的入队和出对操作1先实现循环队列的入队和出队操作
1.问题分析本程序要求实现建立含有若干个元素的循环队列,并实现循环队列的入队和出队操作完成该实验需要以下4个子任务错误!定义一个循环队列的存储结构,定义队列的基本算法错误!定义一个display函数实现队列元素的输出看入队是否成功错误!通过队列的基本算法实现队列的出队操作错误!在主函数中完成操作测试数据设计如下:
123452.概要设计为了实现上述程序功能,需要:错误!声明一个循环队列错误!定义出队列的基本算法,错误!通过键盘输入5个整数,入队,出队错误!在主函数中先往队列里输入5个元素,然后入队,输此看入队是否成功,然后出队,再调用displayO函数看是否出队.1本程序包含7个函数1主函数ma i n2o置空队InitQueue3o判对空Queu eEmp ty4,判队满QueueFull
5.入队Add
6.出队De1ete
7.displ ay各函数关系如下InitQueue@ie ueEmpty Que ueFullMain AddMainD elet ed isplay
3、详细设计实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码.1循环队列#de finem ax1en10typede fst ru ct{int data[max1en];oint front;oint rear;}SeqQueue;2队列基本算法S eqQueue*Ini tQ ue ueSe qQueue*q//建立一个空循环队列{q=Seq Queuema1loc sizeofS eqQ ueue;q-〉front=0;q一〉rear=0;returnq;intQueueFull SeqQueue*q{//判断队列是否为满o ifq-front==q-r ear+1%ma x1e nreturn1;else return0;int Queue EmptySeqQueue*q3o i fq—rear==q—〉fro nto ret urn1;else return0;}void AddSeq Queue*q,in tx〃入队if!QueueFul1q{3q-〉rear=q-r ear+1%maxl e n;b q—da ta[q—〉rear]=x;}els ep rintf〃queueful1〃;}void Delete Seq Queue*q{〃出队i f!QueueEmptyq o q—fr ont=q—f ron t+1%max1en;elsepr intfnqueueEmp ty”;3用disp1ay函数输出循环队列元素voi dd is playSeqQue ue*q〃输出循环队列q的元素o int i;if q-〉front!=q—r ear//循环队列非空,输出队列元素-prin tf〃输出循环队列元素”;oi=q—front;do®i=i+1%max1e n;opr intf%d,q—data[i];}whilei!二q—〉rea r;«}els e呼rintf〃队列为空!”;}4在主函数中先往队列里输入5个元素,输出,看入队是否成功,然后出队,再调用display函数看是否出队.int main eue*q;01nt i,y;q=1n itQueueq;皿匕〃建立空循环队列叩r intf”请输入5个元素”;f o ri=O;i5;i++o o〃入队5个元素°{scanf〃%d”,y;A ddq,y;一odis p layqoo o//输出循环队列元素f o ri=0;i5;i++»”//把5个元素出队b Delet eq;o printf\n请输入1个元素”scant%d n,y ao〃再入队一个元素oAddqy;,displa yq〃再输出循环队列元素ore turn0;}
4、调试分析编译无错误、用户使用说明5程序名为在文件夹里面运行环境clas slo exe,DE BUGVis ua1c++
6.
0、测试结果6请输入5个元素12345输出循环队列元素:12345清输入1个元素输出循环队列元素6Press anykey tocontinue、附录7seqQu#inc1udest dio ho〉#inclu de std1ib h#define maxlen10typedef struct{int dat a[max len];int front;int rear;}SeqQueue;//建立、空循环队歹!SeqQueue*InitQueue SeqQueue*q——4J{oq=Seq Queue*malloc s izeof SeqQueue;q—f ront=0;・〉oqrear=0;o re turnq;〃判断队列是否为满intQueueFu11SeqQueue*q{〉i fq-front==q—rear+1%m axl en®return1;e Isereturn0;{皿〃判断队列是否为空intQueueEmp tySeqQueue*qi fq—rear==q-frontr eturn1;o elsereturn0;〃入队v oid AddSeqQueue*q,intx{if!QueueFu11q{q—rea r=q-rear+l%m axlen;q-data[q-rea r]=x;}e1seprintf queuefull;〃出队vo id DeleteSeqQueue*q{if!QueueEm pt yq〉q-fr ont=q—f ront+l%max1en;ne1sepr intfqueue Empty;//输出循环队列的元素v oid dis p1aySeqQu eue*q q{inti;〃循环队列非空,输出队列元素oifq-front!=q—rear…输出循环队列元素:;pr intf〉i=q—f ront;doi=i+1%maxlen;oprintf%d〃,q-d ata[i];0}wh ile i!=q—rear;b else叩队列为空!”;r intfint mainoSeqQueue*q;intiy;//建立空循环队列q=I nit Queueq;”请输入个元素”;sprint f5//入队个元素ofori=0;i5;i++5scanf”%d”,y;®Ad dq,y;}//输出循环队列元素displayq〈//把个元素出队{f ori=0;i5;i++5Delet eq;叩请输入个元素”rintf\n1》//再入队一个元素scanf%d,y;oAddq,y;〃再输出循环队列元素disp1ayq;return0;2实现链队列的入队和出队操作
1.问题分析本程序要求实现建立含有若干个元素的链队列,并实现链队列入队和出队操作完成该实验需要以下4个子任务错误!定义一个链队列的存储结构,定义链队列的基本算法错误!定义一个disp1ay函数实现队列元素的输出看入队是否成功错误!通过队列的基本算法实现队列的出队操作错误!在主函数中完成操作测试数据设计如下
1234562.概要设计为了实现上述程序功能,需要:错误!声明一个链队列错误!定义出链队列的基本算法,\\acO,3通过键盘输入5个整数,入队,出队错误!在主函数中先往队列里输入5个元素,然后入队,输出,看入队是否成功,然后出队,再调用d isplay函数看是否出队2本程序包含6个函数1主函数ma in
2.置空队I ni tQueue3o判对空QueueEmpty4o入队:Add5o出队:Delete6o disp1ay各函数关系如下:QueueEm pty MainAddDel etedis p1ay
4、详细设计实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码1链队列#def inema xle n10typedef stru ctnode{oin tdata;6struct node*next;}LinkLi st;ty ped efstruct{L inkList*f ront,*r ear;}L inkQu eue;L inkQueue*q;2队列基本算法L inkQueue*SetQ ueue//建立一个空链队列{q=L inkQueue*mallo csizeo fLi nkQueue;q-〉f ront=Link List*mallo csizeofLi nkList;oq-fr ont一〉next=NUL L;q-r ear=q-front;oreturn q;}intQueueEmptyLinkQ ueue*q{/判断队列是否为空if q-r ear==q-〉frontoor eturn1;oelse return0;。
个人认证
优秀文档
获得点赞 0