1. 题目要求:在一个循环链队中只有尾指针(记为rear,结点结构为数据域data,指针域next),请给出这种队列的入队和出队操作的实现过程。

  2. 关键代码:

    //循环链队入队
    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);}
    }
    
  3. 完整程序:复制下列完整代码可以正常运行。

    #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);
    }
    
  4. 运行结果:如下所示,运行结果符合预期。

    6
    3
    3 4 6
    4 6
    6
    队列为空!!!
    队列为空!!!
    4 6
    

-----------------------------------分割线-----------------------------------
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!
对抗一下内容审查,超过十个字的句子不够10行,拿这个凑!

在一个循环链队中只有尾指针(记为rear,结点结构为数据域data,指针域next),请给出这种队列的入队和出队操作的实现过程。相关推荐

  1. C语言回顾--队列的入队和出队

    ------------------------------------------------------------------------------------------- 前言: 前几天做 ...

  2. 循环队列,定义循环队列长度为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< ...

  3. C语言中结构化数据(变量,指针,数组,字符串,结构体和联合)的内存表示

    目录 结构化数据表示 一.内存地址: 二.全局变量和局部变量的内存布局 三.数据在内存中的表示 四.数组在内存中的表示 五.字符串在内存中的表示 六.结构和联合在内存中的表示 结构化数据表示 一.内存 ...

  4. 队列的入队、出队基本操作

    队列 先进先出的线性表(FIFO) 队尾:队列中指定了用来插入数据的一端 队头:队列中指定了用来删除数据的一端 入队:数据的插入动作 出队:数据的删除动作 1.顺序队列 //顺序队列 #define ...

  5. 复习队列的入队和出队操作

    开发工具与关键技术:Visual Studio 2015 作者:杨灵武 撰写时间:2020/04/27 让我们跟着唐懿芳教授的课程来回忆一下队列的特点.好比我们生活中也会发生的排队,先排队的人先得到服 ...

  6. 队列的入队和出队操作

    开发工具与关键技术:Visual Studio 2015 作者:杨灵武 撰写时间:2020/05/27 让我们跟着课程队列的特点.好比我们生活中也会发生的排队, 先排队的人先得到服务,先走出队列,后面 ...

  7. 循环队列的入队,出队,求队长,取对头元素功能实现

    目录 一.队列的定义 二 .真溢出与假溢出 三.解决假溢出 四.注意 五.代码 一.队列的定义 队列只能在一端插入,另一端删除,插入的一端叫队尾(rear),删除的一端叫队首(front).     ...

  8. 队列的入队、出队操作

    队列的常用操作就是入队和出队,这里入队用函数insert实现,出队用函数del实现,print函数实现队列的遍历做操: #include <iostream> #include <s ...

  9. 一个链表不知道头结点,有一个指针指向其中一个结点,请问如何删除这个指针指向的结点

    将这个节点复制成下一个节点的值,然后删除下一个节点 node *p; // 当前节点 node *q; q = p -> next; p.data = q.data; // 复制q节点到p p ...

  10. python Pandas_TEXT实验(读取以下4位同学的成绩并用一个数据框变量pd保存,其中成绩保存在一个TXT文件中...)

    目录 1.(1)读取以下4位同学的成绩并用一个数据框变量pd保存,其中成绩保存在一个TXT文件中,如图所示. (2)对数据框变量pd进行切片操作,分别获得小红.张明.小江.小李的各科成绩,它们是4个数 ...

最新文章

  1. Toad 修改起始窗口
  2. python坐标柱染色_Python matplotlib:在数据坐标中定位colorbar
  3. sparkmllib scala NaiveBayes Demo
  4. python内置作用域_python内置金融数据Python 五点搞定作用域
  5. beanshell断言_JMeter使用BeanShell断言
  6. macOS Big Sur11.2发布候选版更新:修复蓝牙和显示连接问题
  7. C#.Net工作笔记003---异步编程async await_在开发中的使用经验_随时更新
  8. aboutsqlserver.com:mvp
  9. MSSQL中Case语句的用法
  10. 下载xerces.jar链接
  11. 苹果cmsV10资源采集插件
  12. office 论文 页码_word如何设置毕业论文页码
  13. 三菱q系列plc连接电脑步骤_SERVER和三菱Q系列PLC通讯设置步骤 SERVER和三菱Q系列PLC通讯设置步骤...
  14. Android debug时一直处于waiting for debugger解决办法
  15. 不对等的爱情并不长久
  16. 【一周头条盘点】中国软件网(2018.5.7~2018.5.11)
  17. 【Rust日报】2020-10-02 移动操作系统SailfishOS支持Rust了
  18. outlook添加账号发送服务器,如何正确在Outlook登陆QQ邮箱账户-outlook设置
  19. Blender导出.fbx模型到Unity贴图丢失
  20. 【数字孪生】数字孪生十问:分析与思考

热门文章

  1. 基于Java Servlet图片服务器
  2. 苹果服务器国内维护,苹果中国iCloud服务器数据开始转移,这些问题你要注意!...
  3. 自定义ckeditor图片上传插件
  4. 流浪是对另一种生活的执着
  5. matlab地震p波,如何确定地震深度?试试远震P波
  6. not annotated with HTTP method type (ex. GET, POST) 问题解决
  7. Problem B 1076 素数
  8. 计算机专业的浪漫情话,计算机科学与技术表白情话
  9. outlook左侧栏隐藏_Outlook 2007待办事项栏中没有全天活动
  10. iOS MVVM + RxSwift 关键词zip 的调用时机问题