当前位置:   article > 正文

队列(c语言实现)_c语言创建队列

c语言创建队列

目录

前言

一、队列是什么?

二、队列的属性与操作以及种类

1.队列属性

2.队列操作

3.队列种类

三、队列的实现(C语言)

总结



前言

举例:

          现实生活中,去电影院先来的应该先买票就是队列的核心思想。



一、队列是什么?

队列:FIFO(First Input First Output)

定义:

        队列是一种特殊的线性结构只允许在队列的首部进行删除操作(相当于排在最前面的先买票),这称为出队(即最先来的人买完票就应该走),而在队列的尾部进行插入(后来者排对在队尾)操作,这称为入队。


  


二、队列的属性与操作以及种类


1.队列属性

  • 队头(front):允许进行删除的一端称为队首。
  • 队尾(tail):允许进行插入的一端称为队首。
  • 大小(size):队列能够排的最大数量加一


2.队列操作

  • 入队
  • 出队
  • 获取队头元素
  • 判断队是否为空(队头与队尾相遇

3.队列种类

  • 单向队列:只能在一端删除数据,另一端插入数据。
  • 双向队列:两端都可以进行插入数据和删除数据操作。



三、队列的实现(C语言)

以下均是单向队列的实现

1.数组方法

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int q[100]={0,6,3,1,7,5,8,9,2,4},head,tail;
  5. head=1;
  6. tail=10;//初始化队列
  7. while(head<tail)//队列不为空
  8. {
  9. printf("%d ",q[head]);
  10. head++;
  11. q[tail]=q[head];
  12. tail++;
  13. head++;
  14. }
  15. getchar();
  16. return 0;
  17. }

2.结构体方法

  1. #include<stdio.h>
  2. struct queue{
  3. int data[100];//队列大小
  4. int head;//队首
  5. int tail;//队尾
  6. };
  7. int main()
  8. {
  9. struct queue q;
  10. q.head=1;
  11. q.tail=1;
  12. for(int i=1;i<10;i++)//向队列插入 9个数
  13. {
  14. scanf("%d",&q.data[q.tail]);
  15. q.tail++;
  16. }
  17. while(q.head<q.tail)//队列不为空
  18. {
  19. printf("%d ",q.data[q.head]);
  20. q.head++;
  21. q.data[q.tail]=q.data[q.head];
  22. q.tail++;
  23. q.head++;
  24. }
  25. getchar();
  26. return 0;
  27. }

        可以对比,数组法与结构体法,其核心思想一样,只 是结构体将其所有定义封装成一个整体,在主函数main中就可以不用很麻烦的一直定义。

补充:其两种方法不同:

数组法在主函数中

    int q[100]={0,6,3,1,7,5,8,9,2,4},head,tail;
    head=1;
    tail=10;


结构体法在主函数中只需定义: struct queue q;

虽然在这里看不出有很大差别,但是当代码量很大很大,有很多模块时,如果每个模块中均需要定义则很麻烦,结构体则省去了这些冗余。


总结

  1. 队列先进先出
  2. 队列为空相当于队首等于队尾
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/644665
推荐阅读
相关标签
  

闽ICP备14008679号