Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 249|回复: 0

[默认分类] 数据结构——循环队列——2016_12_28

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-6-27 10:20:09 | 显示全部楼层 |阅读模式

    循环队列源代码(C语言版)










    /*******简单实现了插入,删除,长度,退出等功能********/






    1. #include<stdio.h>
    2. #include<stdlib.h>
    3. #define MAXSIZE 100
    4. //定义队列结构
    5. typedef struct Queue{
    6.     int * base;
    7.         int front;
    8.         int rear;
    9. }SQueue;
    10. //初始化100个数字的队列
    11. void InitQueue(SQueue * Q){
    12.     Q->base=(int *)malloc(MAXSIZE*sizeof(int));
    13.         Q->front=Q->rear=0;
    14. }
    15. //返回队列长度
    16. void QueueLength(SQueue * Q){
    17.      printf("此队列的长度为:%d\n",(Q->rear-Q->front+MAXSIZE)%MAXSIZE);
    18. }
    19. //插入节点
    20. void InsertQueue(SQueue * Q,int e){
    21.    if((Q->rear+1)%MAXSIZE==Q->front)
    22.            printf("队列已满!\n");
    23.    else
    24.    {
    25.            Q->base[Q->rear]=e;
    26.            Q->rear=(Q->rear+1)%MAXSIZE;   
    27.    }
    28. }
    29. //删除节点
    30. DeleteQueue(SQueue * Q){
    31.         if(Q->rear==Q->front)
    32.            printf("队列已空!\n");
    33.    else{
    34.            Q->front=(Q->front+1)%MAXSIZE;
    35.            printf("删除完成!\n");
    36. }
    37. }
    38. //打印队列
    39. void PrintQueue(SQueue Q){
    40.         printf("________________________________________________________\n");
    41.         while(Q.front!=Q.rear){    //此处留了一个标志位,所以不用再打印最后一个数。
    42.         printf("%d ",Q.base[Q.front]);
    43.         Q.front=(Q.front+1)%MAXSIZE;
    44.         }
    45.         printf("\n————————————————————————————\n");
    46. }
    47. //主函数
    48. int main(){
    49.         SQueue M;int i,x,v;
    50.         InitQueue(&M);
    51.         for(i=1;i<=12;i++){
    52.         InsertQueue(&M,i);
    53.         }
    54.         printf("十二个数字的队列已经建立完成!\n");
    55.         PrintQueue(M);
    56.         printf("请输入序号进行操作:1.插入  2.删除  3.长度  4.退出\n");
    57.     scanf("%d",&x);
    58.         while(x!=0){
    59.                 switch(x){
    60.                 case 1:printf("请输入要插入的值:");
    61.                            scanf("%d",&v);
    62.                            InsertQueue(&M,v);
    63.                            PrintQueue(M);
    64.                            break;
    65.                 case 2:DeleteQueue(&M);
    66.                            PrintQueue(M);
    67.                            break;
    68.                 case 3:printf("正在计算长度......\n");
    69.                            QueueLength(&M);
    70.                            break;
    71.                 case 4:exit(0);
    72.                 default:printf("输入有误,请重新输入!\n");
    73.                 }
    74.         printf("请输入序号进行操作:1.插入  2.删除  3.长度  4.退出\n");
    75.     scanf("%d",&x);
    76.         }
    77.         return 0;
    78. }
    复制代码





      



      


    程序截图:








































                  联系邮箱:xhsgg12302@outlook.com


      



                                                                                               2016_12_28



    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-24 08:43 , Processed in 0.335227 second(s), 37 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表