1. #include <stdio.h>
  2. #include <tchar.h>
  3. #include <stdlib.h>
  4.  
  5. #define MaxQueueSize 100
  6. // TODO: 在此处引用程序需要的其他头文件
  7. struct Node{
  8. int data;
  9. Node* next;
  10. };
  11. struct Queue{
  12. Node* front;
  13. Node* rear;
  14. };
  15. //初始化队列
  16. bool Init_Queue(Queue* q){
  17. q->front = q->rear = (Node*)malloc(MaxQueueSize*sizeof(Node));
  18. if (!q->front) return false;
  19. q->front->next = NULL;
  20. return true;
  21. }
  22. //清空队列
  23. bool Clear_Queue(Queue* q){
  24. q->front = q->rear;
  25. return true;
  26. }
  27. //销毁队列
  28. bool Destroy_Queue(Queue* q){
  29. Node* temp = q->front;
  30. while (q->front != q->rear){
  31. temp = q->front->next;
  32. free(q->front);
  33. q->front = temp;
  34. }
  35. q->front = q->rear = NULL;
  36. return true;
  37. }
  38. //入队
  39. bool EnQueue(Queue* q, int value){
  40. Node* n = (Node*)malloc(sizeof(Node));
  41. n->next = NULL;
  42. n->data = value;
  43.  
  44. q->rear->next = n;
  45. q->rear = n;
  46. return true;
  47. }
  48. //出队,返回队头元素的值
  49. int DeQueue(Queue* q){
  50. int temp;
  51. if (q->front == q->rear) exit(-);
  52. Node* p = q->front;
  53. temp = p->next->data;
  54. q->front = p->next;
  55. if (p == q->rear) q->front = q->rear;
  56. free(p);
  57. p = NULL;
  58. return temp;
  59. }
  60. //打印队列
  61. void Print_Queue(Queue q){
  62. if (q.front == q.rear) printf("空队列\n");
  63. while (q.front != q.rear){
  64. printf("%d\n", DeQueue(&q));
  65. }
  66. }

c语言实现基本的数据结构(五) 单链队列的更多相关文章

  1. 数据结构算法C语言实现(十一)--- 3.4队列的链式表示和实现

    一.简介 FIFO. 二.头文件 //3_4_part1.h /** author:zhaoyu email:zhaoyu1995.com@gmail.com date:2016-6-9 note:r ...

  2. C语言数据结构-链式队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作

    1.数据结构-链式队列的实现-C语言 typedef struct QNode { int data; struct QNode *next; }QNode,*QueuePtr; typedef st ...

  3. 数据结构和算法(Golang实现)(14)常见数据结构-栈和队列

    栈和队列 一.栈 Stack 和队列 Queue 我们日常生活中,都需要将物品排列,或者安排事情的先后顺序.更通俗地讲,我们买东西时,人太多的情况下,我们要排队,排队也有先后顺序,有些人早了点来,排完 ...

  4. javascript数据结构与算法---队列

    javascript数据结构与算法---队列 队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素.队列用于存储按顺序排列的数据,先进先出,这点和栈不一样(后入先出).在栈中,最后入栈的元素 ...

  5. C++数据结构之链式队列(Linked Queue)

    C++数据结构之链式队列,实现的基本思想和链式栈的实现差不多,比较不同的一点也是需要注意的一点是,链式队列的指向指针有两个,一个是队头指针(front),一个是队尾指针(rear),注意指针的指向是从 ...

  6. JavaScript数据结构和算法----队列

    前言 队列和栈很像,只是用了不同的原则.队列是遵循先进先出(FIFO)原则的一组有序的的项,队列在尾部添加新元素,从顶部移除元素.最新添加的元素必须必须排队在队列的,末尾.可以想象食堂排队买饭的样子. ...

  7. RabbitMQ详解(三)------RabbitMQ的五种队列

    上一篇博客我们介绍了RabbitMQ消息通信中的一些基本概念,这篇博客我们介绍 RabbitMQ 的五种工作模式,这也是实际使用RabbitMQ需要重点关注的. 这里是RabbitMQ 官网中的相关介 ...

  8. JavaScript数据结构与算法-队列练习

    队列的实现 // 队列类 function Deque () { this.dataStore = []; this.enqueueFront = enqueueFront; this.enqueue ...

  9. C语言实现使用动态数组实现循环队列

    我在上一篇博客<C语言实现使用静态数组实现循环队列>中实现了使用静态数组来模拟队列的操作. 因为数组的大小已经被指定.无法动态的扩展. 所以在这篇博客中,我换成动态数组来实现. 动态数组能 ...

  10. RabbitMQ 详解 五种队列-SpiritMark

    上次带大家看了一下RabbitMQ的基本概念,今天我们来详解一下 RabbitMQ的五种队列,也算是一个笔记,如果对您有帮助,可以关注一下,便于下次光顾! 文章目录 1.简单队列 2.work 模式 ...

随机推荐

  1. Linux stty命令

    stty是linux下改变和打印终端设置的常用命令. 一.参数: 1.打印终端行设置 -a,--all   以人可读的方式打印所有当前设置:-a参数比单独的stty命令输出的终端信息更详细 -g,-- ...

  2. [Gamma]Scrum Meeting#8

    github 本次会议项目由PM召开,时间为6月3日晚上10点30分 时长15分钟 任务表格 人员 昨日工作 下一步工作 木鬼 撰写博客,组织例会 撰写博客,组织例会 swoip 前端显示屏幕,翻译坐 ...

  3. React-native升级方法

    React-native升级方法: 官网升级说明 中文版官网说明 各个版本差异对比

  4. button 在chrome浏览器下被点击时会出现一个橙色的边框

    问题描述: button在chrome浏览器下被点击时会出现一个橙色的边框 在button上添加 :focus{outline:none;}也无法解决. 解决办法: 在button上添加 :focus ...

  5. Maven 教程(19)— Maven的六类属性

    原文地址:https://blog.csdn.net/liupeifeng3514/article/details/79776666 内置属性 主要有两个常用内置属性:${basedir}项目的根目录 ...

  6. jquery的Layer弹出框操作

    在layer中,我们要先获取窗口的索引,然后再进行操作. var index = parent.layer.getFrameIndex(window.name); //获取窗口索引 $("# ...

  7. [记录]mscorlib recursive resource lookup bug解决方法

    [Content]Expression: [mscorlib recursive resource lookup bug]Description: Infinite recursion during ...

  8. 模拟 + 打表 --- Emag eht htiw Em Pleh

    Emag eht htiw Em Pleh Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2578   Accepted: ...

  9. Java学习:递归

    递归的思想 以此类推是递归的基本思想. 具体来讲就是把规模大的问题转化为规模小的相似的子问题来解决.在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情 ...

  10. Linux学习笔记之CentOS 7系统使用firewalld管理防火墙端口

    0x00 firewalld的基本使用 # 启动: systemctl start firewalld # 查看状态: systemctl status firewalld # 停止: systemc ...