#include<stdio.h>
#include<stdlib.h>
#include<string.h>#define MAXLEN 100//栈的数据类型
typedef char QElemType ;
//队列的顺序存储,循环队列的数据类型C语言描述typedef struct
{int front;             //指向对头的位置int rear;              //指向对尾的下一个元素的位置int queueSize;           //队列的容量QElemType data[MAXLEN]; //存放对量数据元素的数组;
}SqQueue;
//1.初始化操作
int initSqQueue(SqQueue *LQ)
{LQ->front=LQ->rear=0;LQ->queueSize=MAXLEN;return 1;
}
//2.判断队空
int SqQueueEmpty(SqQueue Q)
{if(Q.front==Q.rear)return 1;else return 0;
}
//3.求队列长度
int SqQueueLength(SqQueue Q)
{return (Q.rear-Q.front+Q.queueSize)%Q.queueSize;
}
//4.得到队头
int SqGetHead(SqQueue Q,QElemType *e)
{if(Q.rear==Q.front)return 0;*e=Q.data[Q.front];return 1;
}
//5.进队列
int SqEnQueue(SqQueue *LQ,QElemType e)
{if((LQ->rear+1)%LQ->queueSize==LQ->front) return 0;LQ->data[LQ->rear]=e;LQ->rear=(LQ->rear+1)%LQ->queueSize;printf("after Enqueue %c:front %d,rear %d\n",e,LQ->front,LQ->rear);return 1;
}
//6.出队列
int SqDeQueue(SqQueue *LQ,QElemType *e)
{if(LQ->front==LQ->rear) return 0;*e=LQ->data[LQ->front];LQ->front=(LQ->front+1)%LQ->queueSize;printf("after Dequeue %c:front %d,rear %d\n",*e,LQ->front,LQ->rear);return 1;
}
//7.遍历队列
void SqQueueTraverse(SqQueue Q)
{int p=Q.front;printf("\nSqQueueTraverse:\n");while(p!=(Q.rear)%Q.queueSize){printf("%c,front %d,rear %d,queueSize %d\n",Q.data[p],Q.front,Q.rear,Q.queueSize);p=(p+1)%Q.queueSize;}printf("\n");
}
void main()
{SqQueue Q;QElemType a='A',b='B',c='C';initSqQueue(&Q);SqEnQueue(&Q,a);SqEnQueue(&Q,b);SqEnQueue(&Q,c);SqQueueTraverse(Q);SqDeQueue(&Q,&a);SqQueueTraverse(Q);
}

运行结果

顺序存储循环队列的基本操作相关推荐

  1. 顺序循环队列的基本操作

    [问题描述] 实现循环队列的基本操作.(循环队列最大长度不超过20) [输入形式] 输入若干个整数(以空格分隔,非整数结束输入),其中0表示做出队操作,不为0的整数为入队元素. [输出形式] 若出队错 ...

  2. 环形队列的输出_循环队列的基本操作详细讲解

    实验学时: 2 实验类型: (设计型) 一.实验目的 1. 理解并掌握队列的逻辑结构和顺序存储结构,了解循环队列的特点: 2. 掌握循环队列中基本操作的相关算法: 3. 编程实现相关算法: 4. 学会 ...

  3. C语言循环队列的基本操作(init,enquene,dequene)与杨辉三角(C和C++<queue>)

    C语言循环队列的基本操作与杨辉三角(C和C++的表示方法) C语言的表示方法 #include <stdio.h> #include <malloc.h> #define ma ...

  4. 附加判定标志的循环队列的基本操作

    附加判定标志的循环队列的基本操作 描述 假设以数组Q[m]存放循环队列中的元素, 同时设置一个标志tag,以tag== 0和tag == 1来区别在队头指针(front)和队尾指针(rear)相等时, ...

  5. 循环队列的基本操作(实验)

    循环队列的基本操作(简略版) 前言 一.代码实现 二.运行结果 总结 前言 编程实现循环队列的以下基本操作:建队列,取队头元素,入队,出队.

  6. java 实现循环队列等基本操作

    Node类: package SqQueue;public class Node {String name;int age;public Node() {}public Node(String nam ...

  7. 循环队列的基本操作,你学会了吗?

  8. 单片机的 FIFO循环队列实现

    转自:单片机的FIFO(先入先出)循环队列实现 // // 文件:config.h // #ifndef __CONFIG_H #define __CONFIG_H //这一段无需改动 //This ...

  9. 【swjtu】数据结构实验3_基于循环队列的排队买票模拟程序

    实验内容及要求: 编程建立循环队列存储结构,对排队买票过程进行模拟.要求程序在控制台屏幕上显示字符菜单: 1. 排队--输入新到达的买票人姓名,加入买票队列中: 2. 售票--排队队列中最前面的人购票 ...

  10. C语言查看队头元素,C语言实现循环队列的初始化进队出队读取队头元素判空-1...

    目前,处在学习数据结构+ing,由于之前学过了队列,今天就把自己写过的代码做了一些完善分享给大家,希望能够帮助到有需要的朋友,有不足的地方欢迎大家交流    φ(゜▽゜*)♪ 队列是另一种限定性的线性 ...

最新文章

  1. 北师大历史系65 级同学聚会宁夏【之七】——在中阿之轴、西夏王陵、董府、板桥道堂、鸿乐府及告别宴会...
  2. 哪个版本好_《道德经》道尽人生大智慧,哪个版本《道德经》的注释比较好呢?...
  3. C#定时清理内存,net网页端可以尝试使用
  4. UA OPTI512R 傅立叶光学导论 衍射例题
  5. Hyperledger Fabric 智能合约实战 (2)软件安装Docker、 Docker-composer、go
  6. 解决Android手机 屏幕横竖屏切换
  7. 为什么苹果有2500亿美刀不用,偏偏要借钱?
  8. 服务器创建多个dhcp服务_如何在15分钟内创建无服务器服务
  9. Go语言结构体的多字段赋值是并发安全的吗?
  10. Mysql 排序null值 排序问题分析
  11. mil和mm之间的换算
  12. 屏幕录像专家V7.5 + 注册机
  13. Win10如何取消开机密码?Win10取消开机密码步骤
  14. Android Studio 网络调试
  15. 2.5W 字详解线程与锁了,面试随便问!!
  16. javascript英语单词音节拆分_英语单词音节拆分程序
  17. 作为程序员的你,常用的工具软件有哪些?
  18. ie浏览器float兼容性
  19. 01组团队项目-Beta冲刺-2/5
  20. python无人驾驶_无人驾驶技术入门(四):无人车传感器 IMU 深入剖析

热门文章

  1. Kafka负载均衡、Kafka自定义Partition、Kafk文件存储机制
  2. 基于微服务架构的门户平台改造的研究
  3. C++--第25课 - 异常处理 - 上
  4. django03配置相关
  5. Scala进阶之路-尾递归优化
  6. nginx allow 多个ip ipv4的网段表示方法解析
  7. 【298天】每日项目总结系列036(2017.11.30)
  8. ArcEngine C# 二次开发 PolyLine 多次打断操作
  9. Mac 下更新 .bash_profile 文件
  10. GRUB 和 GRUB2 的区别