欢迎来到天天文库
浏览记录
ID:48277996
大小:109.01 KB
页数:8页
时间:2019-11-28
《队列实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一.实验项目名称循环队列和链式队列的创建二、实验目的1、掌握队列的特点(先进先出FIFO)及基本操作,如入队、出队等,2、队列顺序存储结构、链式存储结构和循环队列的实现,以便在实际问题背景下灵活应用。三、实验内容1.链式队列的实现和运算2.循环队列的实现和运算四、主要仪器设备及耗材VC++6.0运行环境实现其操作五.程序算法(1)循环队列操作的算法1>进队列Voidenqueue(seqqueue&q,elemtypex){if((q.rear+1)%maxsize==q.front)cout<<”overflow”;else{q.rear=(q.rear+1)
2、%maxsize;//编号加1或循环回第一个单元q.queue[q.rear]=x;}}2>出队列Voiddlqueue(seqqueue&q){if(q.rear==q.front)cout<<”underflow”;elseq.front=(q.front+1)%maxsize;}3>取对头元素elemtypegethead(seqqueueq){if(q.rear==q.front){cout<<”underflow”;returnNULL;}elsereturnq.queue[(q.front+1)%maxsize];//front指向队头前一个位置}4
3、>判队列空否intempty(seqqueueq){if(q.rear==q.front)reurn1;elsereturn0;}(2).链队列操作的算法1>.链队列上的初始化voidINIQUEUE(linkqueue&s){link*p;p=newlink;p->next=NULL;//p是结构体指针类型,用->s.front=p;//s是结构体变量,用.s.rear=p;//头尾指针都指向头结点}2>.入队列voidpush(linkqueue&s,elemtypex){link*p;//p是结构体指针类型,用-> p=newlink;p->data=x;
4、p->next=s.rear->next;//s是结构体变量,用.s.rear->next=p;s.rear=p;//插入最后}3>判队空intempty(linkqueues){if(s.front==s.rear)return1;elsereturn0;}4>.取队头元素elemtypegethead(linkqueues){if(s.front==s.rear)returnNULL;elseretuens.front->next->data;}5>.出队列voidpop(linkqueue&s){link*p;p=s.front->next;if(p->n
5、ext==NULL)//链队列中只有一个元素,需要修改rear指针{s.front->next=NULL;s.rear=s.front;}elses.front->next=p->next;//rear不用变delete(p);}六.程序源代码a.循环队列源代码#include#defineMAXN20structseq{charqueue[MAXN];intfront,rear;};voidiniq(seq&q){q.front=q.rear=MAXN-1;}voidenq(seq&q,charx){if((q.rear+1)%MAXN
6、==q.front)cout<<"overflow";else{q.rear=(q.rear+1)%MAXN;q.queue[q.rear]=x;}//return(0);}voiddlq(seq&q){if(q.rear==q.front)cout<<"underflow";elseq.front=(q.front+1)%MAXN;}intgethead(seq&q)//取队头元素{if(q.rear==q.front)//判断是否队列为空cout<<"underflow";elsereturnq.queue[(q.front+1)%MAXN];}main()
7、{seqq;inti,y;iniq(q);cout<<"输入元素入队0为止"<>i;while(i){enq(q,i);cin>>i;}y=gethead(q);cout<<"队头为="<typedefstructQNode{chardata;QNode*next;}QNode,*QueuePtr;typedefstruct{QueuePtrfront;Queue
8、Ptrrear;}Lin
此文档下载收益归作者所有