47 _ 循环队列程序演示.swf
通过上面的分析我们已经对循环队列很了解了,现在我们来学习下循环队列的实现形式
1、代码使用数组现实循环队列
#include<stdio.h>
#include<malloc.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct Queue{
int * data;//存储的数据,指向一个数组
int font ;//队列数据删除
int rear;//队列数据的添加 }QUEUE ,*PQUEUE; /*初始化队列 6表示数组的长度*/
void initQueue( PQUEUE pQueue){
/*
队列有三个元素构成:
1、一个数组
2、font标志
3、rear标志
*/
//首先让队列 执行一个地址
pQueue->data = (int*)malloc(sizeof(int)*);//该数组存储6个int类型的数据
pQueue->font = ;
pQueue->rear = ; } /*
判断队列是否已经存储满了
*/
bool full_quequ( PQUEUE pQueue){
if((pQueue->rear+)% == pQueue->font){
return true;
}else{
return false;
}
} /*对队列进行遍历*/
void traverse_queue(PQUEUE pQueue){
int index = pQueue->font;
while(index != pQueue->rear){
printf("%d\n",pQueue->data[index]);
index = (index+)%;
}
} /*向队列中存储数据*/
bool en_queue(PQUEUE pQueue ,int val){
if(full_quequ(pQueue)){
return false;
}else{
//将输出放入数组对应的当前rear的位置
pQueue->data[pQueue->rear] = val;
//rear向上移动
pQueue->rear = (pQueue->rear+)%;//数组的长度是6
return true; } } /*判断队列是否为空*/
bool isEmptyQueue(PQUEUE pQueue){ if(pQueue->font == pQueue->rear ){
return true;
}else{
return false;
} } /*删除队列中的元素,将删除的元素保存到pVal的值中*/
bool delete_quequ(PQUEUE pQueue ,int *pVal){
if(isEmptyQueue(pQueue)){
return false;
}else{
//删除元素
*pVal = pQueue->data[pQueue->font];
//font指针上移动
pQueue->font = (pQueue->font +) % ;
return true;
}
}
int main(){
QUEUE s ;
initQueue(&s);
//数组的长度是6,一个空间存储rear,有效的空间只有5个,只能存储5个有效的数据
en_queue(&s,);
en_queue(&s,);
en_queue(&s,);
en_queue(&s,);
en_queue(&s,); traverse_queue(&s);
return ;
}
47 _ 循环队列程序演示.swf的更多相关文章
- 39 _ 队列5 _ 循环队列需要几个参数来确定 及其含义的讲解.swf
上面讲解都是循环队列,如果是链表实现的话就很简单,队列只有循环队列才比较复杂 此时队列中只存储一个有效元素3,当在删除一个元素的时候,队列为空,pFont向上移动,pFont等于pRear,但是此时p ...
- 33_栈程序演示.swf
pBottom执行栈底有效元素的前一个节点,该节点没有存储有效数据,这样设计是便于栈的管理,向链表一样pHead指向链表的第一个节点,该节点是不存储有效数据的 pTop执行栈顶最新的节点 如果pTop ...
- C_数据结构_循环队列
# include <stdio.h> # include <malloc.h> typedef struct Queue { int * pBase; int front; ...
- Java练习小题_猴子吃桃问题分别用for循环和while循环实现程序。
要求说明: 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时, ...
- [py]约瑟夫问题-循环队列
约瑟夫问题(历史战争问题) 直观理解 老外视频讲解 模拟器演示 约瑟夫问题 数学姥公众号 讲的最清楚 背景及,推倒过程讲解得很清晰,旨在提高人们对数据的兴趣 简单说下: 几个人围成一圈(循环队列), ...
- C Primer Plus_第6章_循环_编程练习
1.题略 #include int main(void) { int i; char ch[26]; for (i = 97; i <= (97+25); i++) { ch[i-97] = i ...
- C ~ 链式队列与循环队列
此处的链式与循环队列可以应用于BFS和树的层序遍历.下面是对其结构和基本操作的程序描述. 1.循环队列 解决循环队列的队空和队满的方法: [1].增加一个参数count,用来记录数组中当前 ...
- 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
一.队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其 ...
- javascript实现数据结构与算法系列:队列 -- 链队列和循环队列实现及示例
1 队列的基本概念 队列(Queue):也是运算受限的线性表.是一种先进先出(First In First Out ,简称FIFO)的线性表.只允许在表的一端进行插入,而在另一端进行删除. 队首(fr ...
随机推荐
- List<T> 的扩展方法
//List<T>.Take(m) //取出 前m行 IEnumerable<Person> takeList = lstPerson.Take(4); foreac ...
- Vue 哈希换histroy
这个需要后端支持一下 前端配置在router下的index.js配置如下: import Vue from 'vue' import Router from 'vue-router' import I ...
- SpringBoot实现微信小程序登录的完整例子
目录 一.登录流程 二.后端实现 1.SpringBoot项目结构树 2.实现auth.code2Session 接口的封装 3.建立用户信息表及用户增删改查的管理 4.实现登录认证及令牌生成 三.前 ...
- Rocket - devices - BasicBusBlocker
https://mp.weixin.qq.com/s/m1zfFQeSoGZZduJGbxEqdQ 简单介绍BasicBusBlocker的实现. 1. BasicBusBlockerParams B ...
- Rocket - diplomacy - Node相关类
https://mp.weixin.qq.com/s/BvK3He3GWon8ywG8Jdmcsg 介绍Node相关的类. 1. BaseNode BaseNode是所有节点类的 ...
- jchdl - GSL实例 - Mux4(使用Mux)
https://mp.weixin.qq.com/s/GrYJ4KXEFRoLLmLnAGoMSA 原理图 参考链接 https://github.com/wjcdx/jchdl/blob/ma ...
- Chisel3 - util - Arbiter
https://mp.weixin.qq.com/s/7Y23gV6yPvtmvKHTo2I8mw 基于ReadyValid接口实现的多入单出仲裁器. 参考链接: https://github ...
- Java实现 LeetCode 102 二叉树的层次遍历
102. 二叉树的层次遍历 给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 2 ...
- Java实现 LeetCode 101 对称二叉树
101. 对称二叉树 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2 ...
- XStrea学习手册
一.前言 1.XStream官网 http://x-stream.github.io 2.XStream是什么 XStream是一个简单的基于Java的类库,用来将Java对象序列化成XML(J ...