C_数据结构_循环队列
# include <stdio.h>
# include <malloc.h> typedef struct Queue
{
int * pBase;
int front;
int rear;
}QUEUE; void init(QUEUE *); //初始化
bool en_queue(QUEUE *, int val); //入队
void traverse_queue(QUEUE *); //遍历输出
bool full_queue(QUEUE *); //判断是否已满
bool out_queue(QUEUE *, int * pVal); //出队
bool emput_queue(QUEUE * pQ); //判断是否为空 int main(void)
{
QUEUE Q;
int val; init(&Q);
en_queue(&Q, );
en_queue(&Q, );
en_queue(&Q, );
en_queue(&Q, );
en_queue(&Q, );
en_queue(&Q, );
en_queue(&Q, );
en_queue(&Q, ); traverse_queue(&Q); if ( out_queue(&Q, &val) )
{
printf("出队成功,出队元素是:%d\n", val);
}
else
{
printf("出队失败!\n");
}
traverse_queue(&Q); return ;
} void init(QUEUE *pQ) //初始化
{
pQ->pBase = (int *)malloc(sizeof(int) * );
pQ->front = ;
pQ->rear = ;
} bool full_queue(QUEUE * pQ) //判断是否已满
{
if ( (pQ->rear+) % == pQ->front )
return true;
else
return false;
} bool en_queue(QUEUE * pQ, int val) //入队
{
if ( full_queue(pQ) )
{
return false;
}
else
{
pQ->pBase[pQ->rear] = val;
pQ->rear = (pQ->rear+) % ; return true;
}
} void traverse_queue(QUEUE * pQ) //遍历输出
{
int i = pQ->front; while (i != pQ->rear)
{
printf("%d ", pQ->pBase[i]);
i = (i+) % ;
}
printf("\n"); return;
} bool emput_queue(QUEUE * pQ) //判断是否为空
{
if ( pQ->front == pQ->rear )
return true;
else
return false;
} bool out_queue(QUEUE * pQ, int * pVal) //出队
{
if ( emput_queue(pQ) )
{
return false;
}
else
{
*pVal = pQ->pBase[pQ->rear];
pQ->front = (pQ->front+) % ; return true;
}
}
C_数据结构_循环队列的更多相关文章
- C_数据结构_循环实现求阶乘
# include <stdio.h> int main(void) { int val; printf("请输入一个数字:"); printf("val = ...
- 【Java】 大话数据结构(7) 循环队列和链队列
本文根据<大话数据结构>一书,实现了Java版的循环队列.链队列. 队列:只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 1.循环队列 队列的顺序储存结构:用数组存储队列,引入 ...
- 数据结构:循环队列(C语言实现)
生活中有非常多队列的影子,比方打饭排队,买火车票排队问题等,能够说与时间相关的问题,一般都会涉及到队列问题:从生活中,能够抽象出队列的概念,队列就是一个能够实现"先进先出"的存储结 ...
- TZOJ 数据结构实验--循环队列
描述 创建一个循环队列,队列元素个数为4.能够实现队列的初始化.入队列.出队列.求队列长度等操作. 循环队列数据类型定义如下: typedef struct{ int data[Max]; in ...
- 数据结构之循环队列Demo
循环队列 比较简单,循环队列主要是判断队满.队空.有效元素个数 画图说明: 假设:队的长度为5(0-4) 但是实际maxsize为6,需要一个预留空间(不存储元素)做计算 继续添加3个元素后: 出队一 ...
- 47 _ 循环队列程序演示.swf
通过上面的分析我们已经对循环队列很了解了,现在我们来学习下循环队列的实现形式 1.代码使用数组现实循环队列 #include<stdio.h> #include<malloc.h&g ...
- 39 _ 队列5 _ 循环队列需要几个参数来确定 及其含义的讲解.swf
上面讲解都是循环队列,如果是链表实现的话就很简单,队列只有循环队列才比较复杂 此时队列中只存储一个有效元素3,当在删除一个元素的时候,队列为空,pFont向上移动,pFont等于pRear,但是此时p ...
- java数据结构-10循环队列
一.概念: 循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用 二.代码实现: @SuppressWarnings("unchecked" ...
- c_数据结构_图_邻接表
课程设计------邻接表 图的遍历实现课程设计:https://files.cnblogs.com/files/Vera-y/图的遍历_课程设计.zip #include<stdio.h> ...
随机推荐
- oracle 日期格式化 TO_CHAR (datetime) 修饰语和后缀
Datetime Format Element Suffixes Suffix Meaning Example Element Example Value TH Ordinal Number DDTH ...
- SAP CRM 开发学习资料和教程整理【不定时更新】
本文链接:http://www.cnblogs.com/hhelibeb/p/6276929.html 首先是SAP网站上面的相关内容 SAP Customer Relationship Manage ...
- python五十八课——正则表达式(替换)
替换:sub(regex,repl,string,count,[flags=0]): 替换数据,返回字符串(已经被替换完成后的内容)subn(regex,repl,string,count,[flag ...
- API与软件架构-接口
http://blog.csdn.net/horkychen/article/details/46612899 从架构设计的角度来看(所谓的组成论),软件系统就是模块和接口. 模块(层次/组件)决定分 ...
- NOIP 2000 进制转换
题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1\times 10^2+2\time ...
- ansible-role写法
一.role目录的创建: cd /etc/ansible/ mkdir -pv roles/{websrvs,dbsrvs}/{tasks,files,templates,meta,handlers, ...
- 接上篇elasticsecrchi 进行搜索及时提示,数据库以及后台代码
-- ------------------------------ Table structure for articles-- ----------------------------DROP TA ...
- AI 矩阵求导
矩阵求导 参考链接: https://en.wikipedia.org/wiki/Matrix_calculus#Scalar-by-vector_identities
- Java多线程编程模式实战指南一:Active Object模式(下)
Active Object模式的评价与实现考量 Active Object模式通过将方法的调用与执行分离,实现了异步编程.有利于提高并发性,从而提高系统的吞吐率. Active Object模式还有个 ...
- GIT 分支管理:分支管理策略、Bug分支、Feature分支
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息. 如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的comm ...