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 ...
随机推荐
- (八)Filter&ThreadLocal实现处理事务
ConnectionContext.java package com.aff.bookstore.web; import java.sql.Connection; public class Conne ...
- 在线编写复杂的数学公式--EdrawMath
网址: EdrawMath , 非常好用
- vue-cli4 + TS构建新项目
1. 如果你之前没有安装vue-cli,可以通过如下命令进行安装: npm install -g @vue/cli yarn global add @vue/cli 2. 创建vue项目 vue cr ...
- jchdl - GSL实例 - LogicalLeft
https://mp.weixin.qq.com/s/WNm4bLWzZ0oWHWa7HQ6Y6w 逻辑左移,继承自Shifter类.只需要实现shift方法即可. 参考链接 https:// ...
- [leetcode] 动态规划(Ⅰ)
这次按通过率从高到低刷题. 本文完成的题目:{338, 1025, 303, 121, 53, 392, 70, 746, 198} ,带有「面试」Tag 的题目:Interview - {1617, ...
- 蓝桥杯 算法提高 11-1实现strcmp函数 (JAVA方法)
蓝桥杯 算法提高 11-1实现strcmp函数 (JAVA方法) 首先这不是一个多难的题,但是网上的我没怎么找到有Java的代码,基本全都是c语言的,小编是个小白,如果有不对的地方请联系小编 问题描述 ...
- Java实现 洛谷 P6183 [USACO10MAR]The Rock Game S(DFS)
P6183 [USACO10MAR]The Rock Game S 输入输出样例 输入 3 输出 OOO OXO OXX OOX XOX XXX XXO XOO OOO PS: 因为每一位只有两种可能 ...
- Java实现 LeetCode 165 比较版本号
165. 比较版本号 比较两个版本号 version1 和 version2. 如果 version1 > version2 返回 1,如果 version1 < version2 返回 ...
- Java实现 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…
import java.util.Scanner; public class Main{ private static Scanner cin; public static void main(Str ...
- java代码(2)---Java8 Stream
stream Java8新特性Stream流,那Stream表达式到底是什么呢,为什么可以使你的代码更加整洁而且对集合的操作效率也会大大提高? 一.概述 1.什么是Stream Stream是一种可供 ...