#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. 多IP服务器应用可以有效的降低成本

    多IP的常规应用很多,SEO,EDM,VPN代理等.可以有效的解决成本,很多时候的租用一台高配置服务器通过XEN,hyper-V等虚拟化技术分割成VPS ,共用一台服务器就会大大的降低成本,这样就需要 ...

  2. HTTP常用方法

    GET : 获取资源 get方法用来请求访问已被URI识别的资源. 请求 GET /index.html HTTP/1.1 HOST:www.baidu.com 响应 返回index.html的页面资 ...

  3. Centos7-安装telnet服务

    1,检查是否安装 telnet-server和xinetd rpm -qa telnet-server rpm -qa xinetd 2,如果没有安装过就安装 查找yum yum list |grep ...

  4. video.js不能控制本地视频或者音频播放时长

    问题: 把视频放到本地,然后对视频进行测试,想要控制视频或者音频的播放时长,没办法做到,每次拉动进度条,都会使得本地视频重新播放 原因: 所有浏览器默认js无法访问本地地址,也就是说js不能对本地文件 ...

  5. Web Magic 简介

    WebMagic in Action Little book of WebMagic. WebMagic是我业余开发的一款简单灵活的爬虫框架.基于它你可以很容易的编写一个爬虫. 这本小书以WebMag ...

  6. 用Markdown格式写一份前端简历

    1. 基本信息 姓名:xxx 手机号码:1380000xxxx 学校:南昌大学 学历:大学本科/硕士/博士 工作经验:3年以上Web前端 电子邮件:xxx@outlook.com 2. 求职意向 工作 ...

  7. js内置函数大全及基本使用方法(一)

    一,常规函数 alert函数:显示一个警告对话框,包括一个OK按钮. 语法:alert("hello world"); confirm函数:显示一个确认对话框,包括OK.Cance ...

  8. Effective Java 之-----消除过期的对象引用

    public class Stack { private Object[] elements; private int size = 0; private static final int DEFAU ...

  9. Java语言程序设计基础篇第10版第5章习题答案

    5.1 1 public class Demo { public static void main(String[] args) { // 创建一个输入对象 java.util.Scanner inp ...

  10. 什么是SSL

    什么是SSL 简单来说,在我们使用的浏览器中都默认信任着全世界多个最权威的CA机构(证书颁发机构),如下图: 上图中,受信任的根证书颁发机构列表里的都是我们浏览器中默认信任的CA机构,我们只需要向他们 ...