#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
struct Queue{
int *pBase;
int front; //对头
int rear; //对尾
int len; //队列长度
};
void initQueue(struct Queue * q,int len); //初始化队列
bool inQueue(struct Queue * q); //入队
bool outQueue(struct Queue * q); //出队
bool isEmpty(struct Queue * q); //判断队列是否为空
bool isFull(struct Queue * q); //判断队列是否已满
void printList(struct Queue * q); //输出队列元素
void clearQueue(struct Queue * q); //清空队列元素

int main(int argc, char *argv[])
{
struct Queue q;//就会开辟一个 struc Queue 类型的内存地址
initQueue(&q, 5);
while(inQueue(&q)){}
printList(&q);

outQueue(&q);
outQueue(&q);
while (inQueue(&q)){}
printList(&q);
clearQueue(&q);
while(inQueue(&q)){}
printList(&q);
return 0;
}
//初始化队列
void initQueue(struct Queue *q,int len){
q->pBase = (int *)malloc(sizeof(int)*len);
q->len = len;
q->front = 0;
q->rear = 0;
}
//入队
bool inQueue(struct Queue *q){
if(isFull(q)){
return false;

}
printf("请输入要入队的元素:");
scanf("%d",q->pBase+q->rear);
q->rear = (q->rear+1)%q->len;
return true;

}
//出队
bool outQueue(struct Queue *q){
if(isEmpty(q)){
return false;
}
printf("出队元素为:%d\n",*(q->pBase+q->front));
q->front = (q->front+1)%q->len;
return true;
}
//判断队列是否为空
bool isEmpty(struct Queue * q){
if(q->front == q->rear){
printf("队列已空\n");
return true;
}
return false;

}
//判断队列是否已满
bool isFull(struct Queue * q){
if((q->rear+1)%q->len == q->front){
printf("队列已满\n");
return true;
}
return false;
}
//输出队列元素
void printList(struct Queue * q){
int temp = q->front;
while((temp != q->rear) && !isEmpty(q)){
printf("%d\n",*(q->pBase+temp));
temp = (temp+1)%q->len;
}
}
//清空队列元素
void clearQueue(struct Queue * q){
while(!isEmpty(q)){
q->front = (q->front+1)%q->len;
}
}

C语言队列(数组内核)的更多相关文章

  1. 【算法】C语言实现数组的动态分配

    C语言实现数组的动态分配 作者:白宁超 2016年10月27日20:13:13 摘要:数据结构和算法对于编程的意义不言而喻,具有指导意义的.无论从事算法优化方向研究,还是大数据处理,亦或者网站开发AP ...

  2. C语言一维数组、二维数组、结构体的初始化

    C语言数组的初始化表示方法 一.C语言一维数组初始化: (1)在定义数组时对数组元素赋以初值.如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上面的定义和初始 ...

  3. go语言的 数组、slice、map使用(转)

    golang群 点击加入 go语言的 数组.slice.map使用, 由于网上有很好的说明, 不需要再写了,请看这几篇: Go语言中的 Array, Slice和 Map 深入学习golang五篇,以 ...

  4. go语言 类型:数组

    在go语言中数组array是一组特定长度的有序的元素集合. go的数组类型由两部分组成——类型和长度,二者缺一不可.数组本来就是一块存储相同类型元素的连续内存空间,因此决定一个数组的类型,必然需要决定 ...

  5. C语言基础--数组及相关

    概念: 一堆相同类型的数据的有序集合 格式: 元素类型  数组名称[ 元素个数 ] 定义数组: // 定义了一个名称叫做scores的数组, 数组中可以存放3个int类型的数据 ]; // 只要定义一 ...

  6. 学习C语言的数组

    C语言的数组 数组声明的实例:int num[3];只要记下这个模板就好. 不建议使用变量定义数组,如果使用了变量定义数组,作为数组的元素的个数,不初始化的情况下是随机值,如果初始化会直接报错 注意: ...

  7. 对于C语言中数组名是指针的理解

    我们都知道,c语言中数组名是一个指针,比如下面这段代码 #include<iostream>using namespace std;int main(){ int a[4]={1,2,3, ...

  8. c语言中数组相关问题

    c语言中数组相关问题: 1.数组基本定义: 相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组 ...

  9. 线性表之顺序存储结构(C语言动态数组实现)

    线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链 ...

  10. C语言入门(16)——C语言的数组

    和结构体类似,数组也是一种复合数据类型,它由一系列相同类型的元素组成.C语言支持一维数组和多维数组.如果一个数组的所有元素都不是数组,那么该数组称为一维数组. 一维数组的定义方式 在C语言中使用数组必 ...

随机推荐

  1. Android_基础控件

    目录 一.文本控件TextView 二.按钮控件Button 三.图片控件ImageView 四.输入控件EditText 一.文本控件TextView 1.布局文件 <TextView and ...

  2. Python---socket库

    为方便以后查询和学习,特从常用库函数和示例来总结socket库 1. 术语 family:AF_INET socktype:SOCK_STREAM或SOCK_DGRAM protocol:IPPROT ...

  3. 配置SESSION超时与请求超时

    <!--项目的web.xml中 配置SESSION超时,单位是min.用户在线时间.如果不设置,tomcat下的web.xml的session-timeout为默认.--><sess ...

  4. junit忽略测试方法

    JUnit 提供注解 org.junit.Ignore 用于暂时忽略某个测试方法或者说整个类.因为有时候由于测试环境受限,并不能保证每一个测试方法都能正确运行. 1,方法级别上使用@ignore来注释 ...

  5. 前端工程构建工具FIS3

    FIS3 是面向前端的工程构建工具.解决前端工程中性能优化.资源加载(异步.同步.按需.预加载.依赖管理.合并.内嵌).模块化开发.自动化工具.开发规范.代码部署等问题. 一.安装 全局安装fis3 ...

  6. MySQL5.6安装(RPM)笔记

    1. 检查MySQL是否安装,如果有安装,则移除(rpm –e 名称)[root@localhost ~]# rpm -qa | grep -i mysqlmysql-libs-xxxxxxxxxx. ...

  7. ios MVVM实践 刷新网络请求+tableView展示数据

    [实现效果] [目录结构相关] 此示例展示用的是MVVM结构形式,表述如下 M:数据Model的存储,可以用来对属性进行处理.(即胖model概念,上图中xx万人订阅这个处理方法写在Model内) V ...

  8. scala 小结(一)

    Scala 是什么?(What is scala?)   引用百度百科对于scala的定义: Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编 ...

  9. Java使用Openoffice将word、ppt转换为PDF

    最近项目中要实现WORD的文件预览功能,我们可以通过将WORD转换成PDF或者HTML,然后通过浏览器预览. OpenOffice OpenOffice.org 是一套跨平台的办公室软件套件,能在 W ...

  10. C#基础(六)--枚举的一些常用操作

    本章将介绍以下几点: 1.如何把其它类型转换为枚举类型? 2.如何把枚举中的值添加到下拉菜单中? 一.如何把其它类型转换为枚举类型?        我们回顾一下有关字符串与数字之间的转换,如:     ...