在一个循环链队中只有尾指针(记为rear,结点结构为数据域data,指针域next),请给出这种队列的入队和出队操作的实现过程。
题目要求:在一个循环链队中只有尾指针(记为rear,结点结构为数据域data,指针域next),请给出这种队列的入队和出队操作的实现过程。
关键代码:
//循环链队入队 void EnQueue(LinkQueue *Q, int x) {QueuePtr s=(QueuePtr)malloc(sizeof(QNode));s->data=x;if(Q->rear == NULL){//当队列为空时,为尾指针赋值并修改其后继形成循环。 Q->rear = s;Q->rear->next = Q->rear;}else{s->next=Q->rear->next;Q->rear->next=s;Q->rear=s;} }//循环链队出队 void DeQueue(LinkQueue *Q) {QueuePtr p;if(Q->rear==NULL){printf("队列为空!!!\n");return;}if(Q->rear->next==Q->rear){//当队列仅剩一个元素时,将尾指针置空。 p = Q->rear;free(p);Q->rear=NULL;} else{p=Q->rear->next; Q->rear->next=p->next;free(p);} }
完整程序:复制下列完整代码可以正常运行。
#include "stdio.h" #include "stdlib.h" //定义结点结构 typedef struct QNode {int data;struct QNode *next; }QNode,*QueuePtr; //定义队列 typedef struct {QueuePtr rear;//仅设置尾指针 }LinkQueue;void InitQueue(LinkQueue *Q) { Q->rear=NULL;//无头结点直接置空 }//循环链队入队 void EnQueue(LinkQueue *Q, int x) {QueuePtr s=(QueuePtr)malloc(sizeof(QNode));s->data=x;if(Q->rear == NULL){//当队列为空时,为尾指针赋值并修改其后继形成循环。 Q->rear = s;Q->rear->next = Q->rear;}else{s->next=Q->rear->next;Q->rear->next=s;Q->rear=s;} }//循环链队出队 void DeQueue(LinkQueue *Q) {QueuePtr p;if(Q->rear==NULL){printf("队列为空!!!\n");return;}if(Q->rear->next==Q->rear){//当队列仅剩一个元素时,将尾指针置空。 p = Q->rear;free(p);Q->rear=NULL;} else{p=Q->rear->next; Q->rear->next=p->next;free(p);} }//用于打印循环链队 void QueueTraverse(LinkQueue Q) {if(Q.rear == NULL)printf("队列为空!!!\n");else{QueuePtr p;p = Q.rear->next;printf("%d ",p->data);p=p->next;while(p !=Q.rear->next){printf("%d ",p->data);p=p->next;}printf("\n");} }//用于循环链队的效果 int main() {LinkQueue Q;InitQueue(&Q);EnQueue(&Q,3);EnQueue(&Q,4);EnQueue(&Q,6);printf("%d\n", Q.rear->data);printf("%d\n", Q.rear->next->data);QueueTraverse(Q);DeQueue(&Q);QueueTraverse(Q);DeQueue(&Q);QueueTraverse(Q);DeQueue(&Q);QueueTraverse(Q);DeQueue(&Q);EnQueue(&Q,4);EnQueue(&Q,6);QueueTraverse(Q); }
运行结果:如下所示,运行结果符合预期。
6 3 3 4 6 4 6 6 队列为空!!! 队列为空!!! 4 6
-----------------------------------分割线-----------------------------------
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
在一个循环链队中只有尾指针(记为rear,结点结构为数据域data,指针域next),请给出这种队列的入队和出队操作的实现过程。相关推荐
- C语言回顾--队列的入队和出队
------------------------------------------------------------------------------------------- 前言: 前几天做 ...
- 循环队列,定义循环队列长度为10,编写初始化队列、入队、出队、求队长,实现10,20,30,40,50,60,70,80入队,10,20,30出队,56,67入队的算法功能。
循环队列,定义循环队列长度为10,编写初始化队列.入队.出队.求队长,实现10,20,30,40,50,60,70,80入队,10,20,30出队,56,67入队的算法功能. #include< ...
- C语言中结构化数据(变量,指针,数组,字符串,结构体和联合)的内存表示
目录 结构化数据表示 一.内存地址: 二.全局变量和局部变量的内存布局 三.数据在内存中的表示 四.数组在内存中的表示 五.字符串在内存中的表示 六.结构和联合在内存中的表示 结构化数据表示 一.内存 ...
- 队列的入队、出队基本操作
队列 先进先出的线性表(FIFO) 队尾:队列中指定了用来插入数据的一端 队头:队列中指定了用来删除数据的一端 入队:数据的插入动作 出队:数据的删除动作 1.顺序队列 //顺序队列 #define ...
- 复习队列的入队和出队操作
开发工具与关键技术:Visual Studio 2015 作者:杨灵武 撰写时间:2020/04/27 让我们跟着唐懿芳教授的课程来回忆一下队列的特点.好比我们生活中也会发生的排队,先排队的人先得到服 ...
- 队列的入队和出队操作
开发工具与关键技术:Visual Studio 2015 作者:杨灵武 撰写时间:2020/05/27 让我们跟着课程队列的特点.好比我们生活中也会发生的排队, 先排队的人先得到服务,先走出队列,后面 ...
- 循环队列的入队,出队,求队长,取对头元素功能实现
目录 一.队列的定义 二 .真溢出与假溢出 三.解决假溢出 四.注意 五.代码 一.队列的定义 队列只能在一端插入,另一端删除,插入的一端叫队尾(rear),删除的一端叫队首(front). ...
- 队列的入队、出队操作
队列的常用操作就是入队和出队,这里入队用函数insert实现,出队用函数del实现,print函数实现队列的遍历做操: #include <iostream> #include <s ...
- 一个链表不知道头结点,有一个指针指向其中一个结点,请问如何删除这个指针指向的结点
将这个节点复制成下一个节点的值,然后删除下一个节点 node *p; // 当前节点 node *q; q = p -> next; p.data = q.data; // 复制q节点到p p ...
- python Pandas_TEXT实验(读取以下4位同学的成绩并用一个数据框变量pd保存,其中成绩保存在一个TXT文件中...)
目录 1.(1)读取以下4位同学的成绩并用一个数据框变量pd保存,其中成绩保存在一个TXT文件中,如图所示. (2)对数据框变量pd进行切片操作,分别获得小红.张明.小江.小李的各科成绩,它们是4个数 ...
最新文章
- Toad 修改起始窗口
- python坐标柱染色_Python matplotlib:在数据坐标中定位colorbar
- sparkmllib scala NaiveBayes Demo
- python内置作用域_python内置金融数据Python 五点搞定作用域
- beanshell断言_JMeter使用BeanShell断言
- macOS Big Sur11.2发布候选版更新:修复蓝牙和显示连接问题
- C#.Net工作笔记003---异步编程async await_在开发中的使用经验_随时更新
- aboutsqlserver.com:mvp
- MSSQL中Case语句的用法
- 下载xerces.jar链接
- 苹果cmsV10资源采集插件
- office 论文 页码_word如何设置毕业论文页码
- 三菱q系列plc连接电脑步骤_SERVER和三菱Q系列PLC通讯设置步骤 SERVER和三菱Q系列PLC通讯设置步骤...
- Android debug时一直处于waiting for debugger解决办法
- 不对等的爱情并不长久
- 【一周头条盘点】中国软件网(2018.5.7~2018.5.11)
- 【Rust日报】2020-10-02 移动操作系统SailfishOS支持Rust了
- outlook添加账号发送服务器,如何正确在Outlook登陆QQ邮箱账户-outlook设置
- Blender导出.fbx模型到Unity贴图丢失
- 【数字孪生】数字孪生十问:分析与思考
热门文章
- 基于Java Servlet图片服务器
- 苹果服务器国内维护,苹果中国iCloud服务器数据开始转移,这些问题你要注意!...
- 自定义ckeditor图片上传插件
- 流浪是对另一种生活的执着
- matlab地震p波,如何确定地震深度?试试远震P波
- not annotated with HTTP method type (ex. GET, POST) 问题解决
- Problem B 1076 素数
- 计算机专业的浪漫情话,计算机科学与技术表白情话
- outlook左侧栏隐藏_Outlook 2007待办事项栏中没有全天活动
- iOS MVVM + RxSwift 关键词zip 的调用时机问题