c语言数据结构:用标志位实现循环队列
#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语言数据结构:用标志位实现循环队列的更多相关文章
- Java学习笔记14---使用标志位控制循环
使用标志位控制循环 前面提到了控制循环的常用技术:计数器控制的循环.另一种控制循环的常用技术是在读取和处理一个集合的值时指派一个特殊值.这个特殊的输入值也成为标志值(sentinel value),用 ...
- C语言实现使用动态数组实现循环队列
我在上一篇博客<C语言实现使用静态数组实现循环队列>中实现了使用静态数组来模拟队列的操作. 因为数组的大小已经被指定.无法动态的扩展. 所以在这篇博客中,我换成动态数组来实现. 动态数组能 ...
- C语言数据结构基础学习笔记——栈和队列
之前我们学过了普通的线性表,接下来我们来了解一下两种特殊的线性表——栈和队列. 栈是只允许在一端进行插入或删除的线性表. 栈的顺序存储结构也叫作顺序栈,对于栈顶指针top,当栈为空栈时,top=-1: ...
- C语言数据结构——第三章 栈和队列
三.栈和队列 栈和队列是两种重要的线性结构.从数据结构的角度来看,栈和队列也是线性表,它的特殊性在于栈和队列的基本操作是线性表操作的子集,它们的操作相对于线性表来说是受到限制的,因此,可以称其为限定性 ...
- 数据结构算法C语言实现(十二)--- 3.4循环队列&队列的顺序表示和实现
一.简述 空队列的处理方法:1.另设一个标志位以区别队列是空还是满:2.少用一个元素空间,约定以队列头指针在队尾指针下一位置上作为队列呈满的状态的标志. 二.头文件 //3_4_part1.h /** ...
- 单片机C语言中标志位的经典应用
/* 本例程是C语言的位域操作示例 这里为什么位域结构体与联合体一起使用? -->因为这样定义后,即可以单独使用标志位 也可同时使用整个字节数据 主要应用:单片机C语言 好处:用标志位可以节省R ...
- C语言数据结构-循环队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作
1.数据结构-循环队列的实现-C语言 #define MAXSIZE 100 //循环队列的存储结构 typedef struct { int* base; //基地址 int _front; //头 ...
- 计算机二级-C语言-对标志位的巧妙使用。对二维数组数据进行处理。对文件进行数据输入。
//函数fun的功能是:计算形参x所指数组中平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于的移至后部,平均值作为返回值,在主函数中输出平均值和后移的数据. //重难 ...
- 数据结构(C语言版)---第三章栈和队列 3.4.2 队列的链式表示和实现(循环队列)
这个是循环队列的实现,至于串及数组这两章,等有空再看,下面将学习树. 源码如下: #include <stdio.h> #include <stdlib.h> #define ...
随机推荐
- 9、par画图参数
转载:http://blog.sina.com.cn/s/blog_8f5b2a2e0102v0tf.html 1. 函数par()的使用格式如下: par(..., no.readonly = FA ...
- 31、SAM文件中flag含义解释工具--转载
转载:http://www.cnblogs.com/nkwy2012/p/6362996.html SAM是Sequence Alignment/Map 的缩写.像bwa等软件序列比对结果都会输出这 ...
- 数据库 连接(join)
转自http://www.cnblogs.com/caozengling/p/5318696.html 数据库中飞内连接,自然连接,外连接 数据库中的连接join氛围内连接,自然连接,外连接,外连接又 ...
- jquery对象访问
jquery对象访问 方法名 说明 语法 (callback 执行的函数,object指定元素的对象.) each() 用于以当前jQuery对象匹配到的每个元素作为上下文来遍历执行指定的函数 jQu ...
- OpenStack基础知识-打包知识点
OpenStack是使用setuptools工具来进行打包,不过为了满足OpenStack项目的需求,引入了一个辅助工具pbr来配合setuptools完成打包工作. pbr (Python Buil ...
- luogu 3806 【模板】点分治
luogu 3806 [模板]点分治 给定一棵有n个点的树,有m个询问,每个询问树上距离为k的点对是否存在.树的权值最多不超过c.n<=10000,m<=100,c<=1000,K& ...
- 洛谷P1022 计算器的改良
P1022 计算器的改良 题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了 ...
- 洛谷 P1536 村村通(并查集)
嗯... 题目链接:https://www.luogu.org/problemnew/show/P1536 思路: 这道题可以看出是并查集的思想,然后用一个while嵌套一下,输入一条路的两个端点,就 ...
- 原生JS轮播-各种效果的极简实现(二)面向对象版本的实现和优化
之前写了一篇原生JS轮播,不过是非面向对象的,并且也没有添加上自动轮播.这里来写一下如何优化和进阶. 这里简单地介绍一下之前的代码,这是html结构 <body> <div clas ...
- Django 01 django基本介绍及环境搭建
Django 01 django基本介绍及环境搭建 #http服务器 #用来接收用户请求,并将请求转发给web应用框架进行处理 #Web应用框架 #处理完请求后在发送给http服务器,http服务器在 ...