C/C++实现链式队列
2021/6/21 9:26:01
本文主要是介绍C/C++实现链式队列,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
基本功能
1.初始化链式队列:带头结点
2.入队
3.出队
4.输出队列
代码
链式队列用单链表来实现,所以掌握了单链表就掌握了链式队列。
不同的是,在定义结点、定义队列时和单链表有点区别。链式队列比单链表多了两个指针,分别指向队头和队尾结点,所以定义队列时,不仅定义结点,还要定义这两个指针。
#include <iostream> #include <stdlib.h> using namespace std; typedef int ElemType; //链式队列结点 typedef struct LinkNode{ ElemType data; struct LinkNode *next; }LinkNode; //链式队列指针 typedef struct LinkQueue{ LinkNode *front,*rear; }LinkQueue; void InitQueue(LinkQueue &Q);//初始化链式队列:带头结点 void EnQueue(LinkQueue &Q,ElemType x);//入队 bool DeQueue(LinkQueue &Q,ElemType x);//出队 bool OutPutQueue(LinkQueue Q);//输出队列 //初始化:带头结点 void InitQueue(LinkQueue &Q){ Q.front=Q.rear=(LinkNode *)malloc(sizeof(LinkNode));//建立头结点 Q.front->next=NULL; } //入队 void EnQueue(LinkQueue &Q,ElemType x){ LinkNode *s; s=(LinkNode *)malloc(sizeof(LinkNode)); s->data=x; s->next=NULL; Q.rear->next=s; Q.rear=s; } //出队 bool DeQueue(LinkQueue &Q,ElemType x){ if(Q.front==Q.rear)return false; LinkNode *p=Q.front->next; x=p->data; Q.front->next=p->next; if(Q.rear==p){ Q.rear=Q.front; } free(p); return true; } //输出队列 bool OutPutQueue(LinkQueue Q){ if(Q.front==Q.rear){ printf("队列为空\n"); return false; } LinkNode *p=Q.front->next; while(p!=NULL){ printf("%d ",p->data); p=p->next; } return true; } int main(){ ElemType x; LinkQueue Q; InitQueue(Q); EnQueue(Q,1); EnQueue(Q,2); EnQueue(Q,3); EnQueue(Q,4); EnQueue(Q,5); DeQueue(Q,x); DeQueue(Q,x); DeQueue(Q,x); DeQueue(Q,x); DeQueue(Q,x); if(DeQueue(Q,x)){ printf("出队成功\n"); }else{ printf("出队失败\n"); } OutPutQueue(Q); return 0; }
这篇关于C/C++实现链式队列的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-26怎么使用nsenter命令进入容器?-icode9专业技术文章分享
- 2024-12-26导入文件提示存在乱码,请确定使用的是UTF-8编码怎么解决?-icode9专业技术文章分享
- 2024-12-26csv文件怎么设置编码?-icode9专业技术文章分享
- 2024-12-25TypeScript基础知识详解
- 2024-12-25安卓NDK 是什么?-icode9专业技术文章分享
- 2024-12-25caddy 可以定义日志到 文件吗?-icode9专业技术文章分享
- 2024-12-25wordfence如何设置密码规则?-icode9专业技术文章分享
- 2024-12-25有哪些方法可以实现 DLL 文件路径的管理?-icode9专业技术文章分享
- 2024-12-25错误信息 "At least one element in the source array could not be cast down to the destination array-icode9专业技术文章分享
- 2024-12-25'flutter' 不是内部或外部命令,也不是可运行的程序 或批处理文件。错误信息提示什么意思?-icode9专业技术文章分享