云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 栈和队列的基本操作实现及其应用

栈和队列的基本操作实现及其应用

  • 62 次阅读
  • 3 次下载
  • 2025/5/3 14:11:32

p=Q.front->next; while(p) {

cout<data<<'\\t'; p=p->next; }

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<0&&a<=6); 说明:

通过调用序列号不同的函数进行各种操作。函数根据每次输入的数进行判断不在1—6内的函数将结束,否则将继续进行。

二_五、程序调试及运行结果分析

程序第一步必须执行初始化,否则程序不能运行。

在程序第一步必须执行初始化后,程序完美运行,在进行任何函数操作程序都是正常运行,而且本程序对插入和删除时进行错误检测如有的地方不可以插入,有点地方不能删除,如果队列为空时则程序会输出队列为空,并继续进行其他操作,大大减少了程序的bug。

二_六、程序清单

#include using namespace std; typedef int QElemType; typedef struct QNode {

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 -

搜索更多关于: 栈和队列的基本操作实现及其应用 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

p=Q.front->next; while(p) { cout

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com