C语言数据结构中链队列的基本操作是怎样的
发表于:2025-01-28 作者:千家信息网编辑
千家信息网最后更新 2025年01月28日,这篇文章将为大家详细讲解有关C语言数据结构中链队列的基本操作是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.队列的定义队列 (Queue)是
千家信息网最后更新 2025年01月28日C语言数据结构中链队列的基本操作是怎样的
这篇文章将为大家详细讲解有关C语言数据结构中链队列的基本操作是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
1.队列的定义
队列 (Queue)是另一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出(Fist In Fist Out,缩写为FIFO)的特性。在队列中,允许插入的一端叫做队尾(rear),允许删除的一端则称为队头(front)。 假设队列为q=(a1,a2,…,an),那么a1就是队头元素,an则是队尾元素。队列中的元素是按照a1、a2、…、an的顺序进入的, 退出队列也必须按照同样的次序依次出队,也就是说,只有在a1、a2、…、an-1都离开队列之后,an才能退出队列。
2.队列的表示和实现
链队列可以定义如下:
#define TRUE 1#define FALSE 0typedef struct QNode{ QElemType data; struct QNode *next;}QNode, *QueuePtr;typedef struct{ QueuePtr front; QueuePtr rear;}LinkQueue;
(1) 初始化操作
Status InitQueue(LinkQueue &Q){ Q.front = Q.rear = (Queueptr) malloc(sizeof(QNode)); if(!Q.front) exit ( OVERFLOW); Q.front ->next = NULL; return OK;}
(2)销毁队列
Status DestroyQueue(LinkQueue &Q){ while(Q.front) { Q.rear = Q.front->next; free (Q.front); Q.front = Q.rear; } return OK;}
(3) 入队操作
Status EnQueue (LinkQueue &Q, QelemType e){ p= (QueuePtr) malloc(sizeof(QNode)); if (!p) exit ( OVERFLOW); p->data = e; p->next = NULL; Q.rear -> next =p; Q.rear = p; return OK;}
(4) 出队操作
Status DeQueue (LinkQueue &Q, QelemType &e){ if ( Q.front == Q.rear) return ERROR; p=Q.front->next; e=p->data; Q.front->next =p->next; if (Q.rear == p) Q.rear = Q.front; free(p); return OK;}
附录完整代码:
#includeusing namespace std;#define OK 1#define FALSE 0typedef int QElemType;typedef int Status;typedef struct QNode{ QElemType data; struct QNode *next;}QNode,*QueuePtr;typedef struct{ QueuePtr font; QueuePtr near;}LinkQueue;Status InitQueue(LinkQueue &Q){ Q.font=(QueuePtr)malloc(sizeof(QNode)); if(!Q.font) exit(FALSE); Q.font->next=NULL; Q.near=Q.font; return OK;}Status QueueEmpty(LinkQueue Q){ if(Q.font->next) return OK; return FALSE;}Status EnQueue(LinkQueue &Q,QElemType e){ QueuePtr p=(QueuePtr)malloc(sizeof(QNode)); p->data=e; Q.near->next = p; Q.near = Q.near->next; p->next = NULL; return OK;}Status DeQueue(LinkQueue &Q,QElemType &e){ if(!Q.font->next) return FALSE; QueuePtr p; p=Q.font->next; e=p->data; Q.font->next=p->next; if(Q.near==p) Q.near=Q.font; //当是最后一个元素时,Q.font=NULL,Q.near=Q.font free(p); return OK;}Status ClearQueue(LinkQueue &Q){ QueuePtr p; p=Q.font->next; QueuePtr q; while(p) { q=p; p=p->next; Q.font->next=p; free(q); } Q.near=Q.font; return OK;}void menu(){ cout<<"初始化队列:1"< 关于C语言数据结构中链队列的基本操作是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
队列
元素
一端
基本操作
数据
数据结构
结构
语言
内容
文章
更多
知识
篇文章
不错
成功
也就是
也就是说
代码
先进
只有
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
南京服务器工控机价格
物理安全网络安全
悉尼大学的网络技术
党校意识形态网络安全检查
git客户端 服务器
513代理服务器
编程软件开发学校
程序获取新浪数据库连接
mysql嵌入式数据库大小
论文用什么数据库
网络安全法的封面
农村电商物流的网络技术
深圳软件开发无需经验全程扶持
家里linux服务器有什么用
山东软件开发有哪些网站
数据库sa登录附加数据库
腾讯云服务器网络连接
cmd登录服务器安全模式
电子商务网络安全案例分析
服务器系统怎么做文件共享
网络安全专业大学排名50
电脑音频服务器连接
远程无法访问服务器管理端口
南昌本地软件开发员
投影运算和数据库关系
网络安全辩论赛
数据库是算法还是开发
山东口碑好的浪潮服务器
修服务器和电脑挣钱吗
基于matlab软件开发