贵州大学实验报告
学院:计信学院 专业:网络工程 班级:网络111
姓名 实验时间 实验项目名称 实验目的 实验环境 运行Visual c++的微机一台 1.掌握队列的思想及其存储实现。 2.掌握队列的常见算法的程序实现。 单桢婷 2013/5/20 学号 指导教师 1108060011 叶洁 栈的实现 实验组 成绩 实验内容 1.采用链式存储实现队列的初始化、入队、出队操作。 2.采用顺序存储实现循环队列的初始化、入队、出队操作。 3.在主函数中设计一个简单的菜单,分别测试上述算法。 #include #include #include typedef int ElemType; //顺序存储队列的结构体定义 struct Queue{ ElemType *queue; int front,rear,len; int MaxSize; }; //初始化 void InitQueue(Queue &Q){ Q.MaxSize=10; Q.queue=new ElemType[Q.MaxSize]; Q.front=Q.rear=0; }; //入队列 void EnQueue(Queue &Q,ElemType item){ if((Q.rear+1)%Q.MaxSize==Q.front){ 实 int k=sizeof(ElemType); Q.queue=(ElemType*)realloc(Q.queue,(2*Q.MaxSize)*k); 验 if(Q.rear!=Q.MaxSize-1){ 数 for(int i=0;i<=Q.rear;i++) Q.queue[i+Q.MaxSize] =Q.queue[i]; 据 Q.rear+=Q.MaxSize; } } Q.rear=(Q.rear+1)%Q.MaxSize; Q.queue[Q.rear]=item; } //出队列 int OutQueue(Queue &Q) { if(Q.front ==Q.rear ) { cout<<\队列为空删除无效!\return 0; } Q.front= (Q.front +1)%Q.MaxSize ; return Q.queue [Q.front ]; } //显示队列中的元素 void palyQueue(Queue & Q) { if(Q.front ==Q.rear ) { cout<<\队列为空,无法读取!\} int i=1; while(Q.front +i<=Q.rear ) { int k=Q.queue [(Q.front +i)%Q.MaxSize]; cout<<\第\元素为\i++; } } //链式存储 struct LNode { ElemType data; LNode *next; }; struct LinkQueue { LNode* front; LNode* rear; }; //初始化 void IN(LinkQueue&HQ) { HQ.front=HQ.rear=NULL; } //插入元素 void EnQ(LinkQueue &HQ,ElemType item) { LNode*newptr=new LNode; newptr->data =item; newptr->next =NULL; if (HQ.rear==NULL) { HQ.front=HQ.rear =newptr; } else HQ.rear=HQ.rear->next=newptr; } //删除队首元素 int OutQ(LinkQueue &HQ,ElemType &item) { LNode *p; if(HQ.front==NULL) { cout<<\链队为空,删除失败!\} item=HQ.front->data; { p=HQ.front; HQ.front =p->next ; if(HQ.front ==NULL) HQ.rear=NULL; delete p; return item; } } //显示链队中的元素 void PeekQ(LinkQueue &HQ) { if(HQ.front ==NULL) { cout<<\链队为空,无法读取!\} int i=1; while (HQ.front!=NULL ) { cout<<\第\个元素为:\i++; HQ.front=HQ.front->next ; } } void main() { Queue G; int x,y; cout<<\队列的顺序存储\InitQueue(G); cout<<\插入元素\ cout<<\队列中元素个数为:\cin>>y; for(int i=1;i<=y;i++) { cout<<\第\个元素为:\cin>>x; EnQueue(G,x); } cout<<\显示队列中的元素\palyQueue(G); cout<<\在队尾插入元素:\cin>>x; EnQueue(G,x); cout<<\显示队列中的元素\palyQueue(G); cout<<\删除队首元素并返回\cout<< OutQueue(G); cout<>y; for (int j=1;j<=y;j++) { cout<<\第\个元素为:\cin>>x; EnQ(p,x); } cout<<\显示队列中的元素\PeekQ(p); cout<<\在队尾插入元素:\cin>>y; EnQ(p,y); cout<<\显示队列中的元素\PeekQ(p); cout<<\删除队首元素并返回\cout<< OutQ(p,y); cout<