当前位置:首页 > 栈和队列的基本操作实现及其应用
p=Q.front->next; while(p) {
cout<
cout< 7、主界面函数 void zhujiemian() { cout< cout<<\【\\t\\t 数据结构实验二 】\ cout<<\ 【\\t\\t---------------------------------------------------------------------】\ cout<<\【\\t\\t 1 队列初始化 】\ cout<<\【\\t\\t 2 出队列 】\ cout<<\【\\t\\t 3 入队列 】\ cout<<\【\\t\\t 4 队列长度 】\ cout<<\【\\t\\t 5 在队列中查找元素 】\ cout<<\【\\t\\t 6 遍历队列 】\ cout<<\【\\t\\t 其他键退出 】\ cout<<\ 【\\t\\t---------------------------------------------------------------------】\ cout<<\【\\t\\t 请选择要进行操作的序号(1--6) 】:\} 二_四、函数调用及主函数设计 主函数主要涉及: LinkQueue Q; int a,b,c; zhujiemian(); cin>>a; while(a!=1) { - 9 - cout<<\输入错误,必须先初始化,请重新输入:\ cin>>a; } cout< switch(a) { case 1: if(InitQueue(Q)==0) cout<<\初始化成功!\ else cout<<\初始化失败!\ break; case 2: if(QueueLength(Q)==0) { cout<<\队列为空无法出队!\ break; } if(DeQueue(Q,c)==0) cout<<\删除成功!\ else cout<<\删除失败!\ break; case 3: cout<<\输入你要入队元素\ cin>>c; if(EnQueue(Q,c) ==0) cout<<\入队成功!\ else cout<<\入队失败!\ break; case 4: b=QueueLength(Q); cout<<\队列的长度为:\ break; case 5: cout<<\您要查找的元素:\ - 10 - cin>>b; if(QueueFind(Q,b)==1) cout<<\恭喜您,队列中有您要找的元素\ else cout<<\不好意思,队列中没有您要找的元素\ break; case 6: QueueTraverse(Q); break; default: break; } zhujiemian(); cin>>a; cout< 通过调用序列号不同的函数进行各种操作。函数根据每次输入的数进行判断不在1—6内的函数将结束,否则将继续进行。 二_五、程序调试及运行结果分析 程序第一步必须执行初始化,否则程序不能运行。 在程序第一步必须执行初始化后,程序完美运行,在进行任何函数操作程序都是正常运行,而且本程序对插入和删除时进行错误检测如有的地方不可以插入,有点地方不能删除,如果队列为空时则程序会输出队列为空,并继续进行其他操作,大大减少了程序的bug。 二_六、程序清单 #include QElemType data; struct QNode *next; }QNode, *QueuePtr; typedef struct { QueuePtr front; QueuePtr rear; - 11 - int count; }LinkQueue; int InitQueue(LinkQueue &Q) { Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode)); if(!Q.front) return -1; Q.front->next=NULL; return 0; } int EnQueue(LinkQueue &Q,QElemType e) { QueuePtr lpp; lpp=(QueuePtr)malloc(sizeof(QNode)); if(!lpp) return -1; lpp->data=e; lpp->next=NULL; if(Q.front==NULL) { Q.front->next=lpp; Q.rear=lpp; } else { Q.rear->next=lpp; Q.rear=lpp; } return 0; } int DeQueue(LinkQueue &Q,QElemType &e) { QueuePtr lpp; if(Q.front==Q.rear) return -1; lpp=Q.front->next; e=lpp->data; Q.front->next=lpp->next; if(Q.rear==lpp) Q.rear=Q.front; delete lpp; return 0; } int QueueLength(LinkQueue Q) - 12 -
共分享92篇相关文档