#include<stdio.h>
#include<stdlib.h> #define MAXSIZE 10//定义队列长度 static int flag=;//定义标志位 typedef struct {
int *base;
int front;
int rear;
}SqQueue;//创建结构体 int InitQueue(SqQueue &Q){
Q.base=(int*)malloc(MAXSIZE*sizeof(int));
if(!Q.base)
return ;
else{
Q.front=Q.rear=;
return ;
}
}//创建空链表 int IsEmpety(SqQueue &Q){
if(flag==&&Q.front==Q.rear){
printf("队列为空\n");
return ;
}
else
return ; }//判断是否为空 int IsFull(SqQueue &Q){
if(flag==&&Q.front==Q.rear){
printf("队列已满\n");
return ;
}
else
return ;
}//判断是否已满 void AddQueue(SqQueue &Q){
if(IsFull(Q)==){
int e;
printf("请输入元素:\n");
scanf("%d",&e);
Q.base[Q.rear]=e;
Q.rear=(Q.rear+)%MAXSIZE;
flag=;
}
}//添加元素 void DeleteQueue(SqQueue &Q){
if(IsEmpety(Q)==){
int e;
e=Q.base[Q.front];
Q.front=(Q.front+)%MAXSIZE;
flag=;
printf("%d\n",e);
}
}//删减元素 void Action(SqQueue &Q){
printf("1.入队\n");
printf("2.使队头元素出队,并返回它的值\n");
printf("3.退出\n");
int a;
scanf("%d",&a);
switch(a)
{
case : AddQueue(Q);
break;
case : DeleteQueue(Q);
break;
case :
exit();
default:
printf("输入不合法,请重新输入\n"); }
Action(Q);
}//操作选项 int main(){
SqQueue Q;
if(InitQueue(Q))
printf("创建成功。\n");
else{
printf("创建失败。");
system("pause");
return ;
} Action(Q); system("pause");
free(Q.base);
return ; }//主函数

虽然用标志位实现了,可是将int型数组换为char型数组时会出现错误,在此保留疑问,待解决。

c语言数据结构:用标志位实现循环队列的更多相关文章

  1. Java学习笔记14---使用标志位控制循环

    使用标志位控制循环 前面提到了控制循环的常用技术:计数器控制的循环.另一种控制循环的常用技术是在读取和处理一个集合的值时指派一个特殊值.这个特殊的输入值也成为标志值(sentinel value),用 ...

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

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

  3. C语言数据结构基础学习笔记——栈和队列

    之前我们学过了普通的线性表,接下来我们来了解一下两种特殊的线性表——栈和队列. 栈是只允许在一端进行插入或删除的线性表. 栈的顺序存储结构也叫作顺序栈,对于栈顶指针top,当栈为空栈时,top=-1: ...

  4. C语言数据结构——第三章 栈和队列

    三.栈和队列 栈和队列是两种重要的线性结构.从数据结构的角度来看,栈和队列也是线性表,它的特殊性在于栈和队列的基本操作是线性表操作的子集,它们的操作相对于线性表来说是受到限制的,因此,可以称其为限定性 ...

  5. 数据结构算法C语言实现(十二)--- 3.4循环队列&队列的顺序表示和实现

    一.简述 空队列的处理方法:1.另设一个标志位以区别队列是空还是满:2.少用一个元素空间,约定以队列头指针在队尾指针下一位置上作为队列呈满的状态的标志. 二.头文件 //3_4_part1.h /** ...

  6. 单片机C语言中标志位的经典应用

    /* 本例程是C语言的位域操作示例 这里为什么位域结构体与联合体一起使用? -->因为这样定义后,即可以单独使用标志位 也可同时使用整个字节数据 主要应用:单片机C语言 好处:用标志位可以节省R ...

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

    1.数据结构-循环队列的实现-C语言 #define MAXSIZE 100 //循环队列的存储结构 typedef struct { int* base; //基地址 int _front; //头 ...

  8. 计算机二级-C语言-对标志位的巧妙使用。对二维数组数据进行处理。对文件进行数据输入。

    //函数fun的功能是:计算形参x所指数组中平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于的移至后部,平均值作为返回值,在主函数中输出平均值和后移的数据. //重难 ...

  9. 数据结构(C语言版)---第三章栈和队列 3.4.2 队列的链式表示和实现(循环队列)

    这个是循环队列的实现,至于串及数组这两章,等有空再看,下面将学习树. 源码如下: #include <stdio.h> #include <stdlib.h> #define ...

随机推荐

  1. 3. 文件上传靶机实战(附靶机跟writeup)

    upload-labs 一个帮你总结所有类型的上传漏洞的靶场 文件上传靶机下载地址:https://github.com/c0ny1/upload-labs   运行环境 操作系统:推荐windows ...

  2. Elasticsearch集群使用ik分词器

    IK分词插件的安装 ES集群环境 VMWare下三台虚拟机Ubuntu 14.04.2 LTS JDK 1.8.0_66 Elasticsearch 2.3.1 elasticsearch-jdbc- ...

  3. Docker版本

    第一次接触到安装docker的时候,网上的 安装 有 lxc-docker, docker-engine, docker.io, docker-ce 这些包,肯定会有些迷糊.读完这篇文章你就清楚了. ...

  4. Oracle中 row_number() over()分析函数(转)

    https://www.cnblogs.com/moon-jiajun/p/3530035.html

  5. matplotlib.pyplot import报错: ValueError: _getfullpathname: embedded null character in path

    Environment: Windows 10, Anaconda 3.6 matplotlib 2.0 import matplotlib.pyplot 报错: ValueError: _getfu ...

  6. uva 1153 顾客是上帝(贪心)

    uva 1153 顾客是上帝(贪心) 有n个工作,已知每个工作需要的时间q[i]和截止时间d[i](必须在此前完成),最多能完成多少个工作?工作只能串行完成,第一项任务开始的时间不早于时刻0. 这道题 ...

  7. 利用xsltproc转换jtl报告到html报告

    使用Jmeter测试完后并不能直接生成html报告,而是jtl报告.这里我们可以用xsltproc来解决. xsltproc是由DanielVeillard用来C语言编写的是一个快速XSLT引擎,   ...

  8. [Leetcode]008.String to Integer (atoi)

    public class Solution { public int myAtoi(String str) { int index = 0, sign = 1, total = 0; //1. 边界条 ...

  9. Codeforces 1161B(判断旋转对称)

    要点 外层暴力枚举转的"角度",会发现肯定是n的约数 对于m条线段想判定当前的"角度"是否ok,每个线段只要管它自己的下一个即可,不必画个圈遍历一遍 之后将本来 ...

  10. JS——数组、==和===的区别

    创建数组的方式: 1) <script type='text/javascript'> var aRr = new Array(1,2,3,4,'abc',3) </script&g ...