文档介绍:实验四队列存储与操作实验目的1、 掌握队列顺序存储结构(循环队列)及实现及操作2、 掌握队列的链接存储结构及实现及操作实验内容1、 建立一个空顺序存储结构队列;对已建立的队列进行插入、删除、取队头元素等基本操作。2、 建立一个空链式存储结构队列;对已建立的队列进行插入、删除、取队头元素等基本操作。详细设计:1、顺序队列的实现:#include<iostream>usingntimespticestd;constintSize=100;typedefcharDataType;classCirQueue{public:CirQueue(){Front二rear二0://构造队列,初始化一个空的循环队列,fronl和rear指向)^CirQueue(){)voidEnQueue(DataTypex){if((rear+l)%Size~front){cout«z,队列己经满了〃〈〈cndl;return;rear=(rear+1)%Size;//队尾指针在循环的意义下加data[rear]=x;cout«x«,/已入队/z«endl;return;)DataTypeGetQueue()//取队头{if(isEmpty()){cout«z,队列为空,,«endl;return0;)inti;i=(front+l)%Sizo;returndataliI:)DataTypeDeQueue(){if(isEmpty()){cout<<"队列为空"<<endl;return0;)front=(front+l)%Sizo;//队头指针在循环的意义下加returndatalfront]:)intisEmpty()//是否为空{if(front==rear){return1;return0;))private:DataTypedata[Size];intfront,roar;};intmain()CirQueuea;intindex;DataTypetemp;docout«z,K入队操作z,«endl:cout<<"2、取队头操作"<<endl;cout«"3、出队操作"<<endl;cout«"4、判断队列是否为空"<<endl;cout<X〃5、退出"«endl;cout<<,/**********************************,z<<endl;cin»index;if(index==5){return0;}switch(index){case1:cout«"请输入要入队的元索"«endl;cin»temp;日・EnQueue(temp);break;case2:tcmp=a・GotQueueO;if(temp!=0){cout<<"队头的元素为"<<temp<<""<<endl;)break;case3:temp^ci・DeQueue();if(temp!二0){cout«,/出队的元索为,,«endl;)break;case4:booltemp;temp=a・isEmpty();if(temp){cout<<"空队"<<endl;)else{cout«,z非空队z/«endl;break;}while(index);return0;}2、链队列的实现:#include〈iostream>usingnamespacestd;constintSizc=100;typedefcharDataType;structNode{DataTypedata;Node*next;};classLinkQueue{public:LinkQueue(){autohead=newNode;head->next=M'LL;front=rear=head;}^LinkQueue(){}voidEnQueue(DataTypex){autos=newNode;s->clata=x;?为航的?结d点?ss->next=NL'LL;//巾®?请?一?个?数籬据Y域rear->next=s;rear=s;}DataTypeGctQucuc()//取?队d头?{if(isEmpty())cout<<zz队6列为已空?"《endl;return0;returnfront->ncxt->data;}DataTypeDeQueue(){if(isEmpty()){cout<<"队6列为a空?,,<<cndl;return0;}autop=newNode;//用?于?暂丫存?队6头?元&索?DataTypex;〃用?于?暂丫存?队6头?数範据Yp=front->next;x=p->clata;front->next=p->next;if(p->next—NULL){rear=front;}deletep;returnx;}intisEmptyO//是?否?为a空?{if