C语言队列(数组内核)
#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语言队列(数组内核)的更多相关文章
- 【算法】C语言实现数组的动态分配
C语言实现数组的动态分配 作者:白宁超 2016年10月27日20:13:13 摘要:数据结构和算法对于编程的意义不言而喻,具有指导意义的.无论从事算法优化方向研究,还是大数据处理,亦或者网站开发AP ...
- C语言一维数组、二维数组、结构体的初始化
C语言数组的初始化表示方法 一.C语言一维数组初始化: (1)在定义数组时对数组元素赋以初值.如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上面的定义和初始 ...
- go语言的 数组、slice、map使用(转)
golang群 点击加入 go语言的 数组.slice.map使用, 由于网上有很好的说明, 不需要再写了,请看这几篇: Go语言中的 Array, Slice和 Map 深入学习golang五篇,以 ...
- go语言 类型:数组
在go语言中数组array是一组特定长度的有序的元素集合. go的数组类型由两部分组成——类型和长度,二者缺一不可.数组本来就是一块存储相同类型元素的连续内存空间,因此决定一个数组的类型,必然需要决定 ...
- C语言基础--数组及相关
概念: 一堆相同类型的数据的有序集合 格式: 元素类型 数组名称[ 元素个数 ] 定义数组: // 定义了一个名称叫做scores的数组, 数组中可以存放3个int类型的数据 ]; // 只要定义一 ...
- 学习C语言的数组
C语言的数组 数组声明的实例:int num[3];只要记下这个模板就好. 不建议使用变量定义数组,如果使用了变量定义数组,作为数组的元素的个数,不初始化的情况下是随机值,如果初始化会直接报错 注意: ...
- 对于C语言中数组名是指针的理解
我们都知道,c语言中数组名是一个指针,比如下面这段代码 #include<iostream>using namespace std;int main(){ int a[4]={1,2,3, ...
- c语言中数组相关问题
c语言中数组相关问题: 1.数组基本定义: 相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组 ...
- 线性表之顺序存储结构(C语言动态数组实现)
线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链 ...
- C语言入门(16)——C语言的数组
和结构体类似,数组也是一种复合数据类型,它由一系列相同类型的元素组成.C语言支持一维数组和多维数组.如果一个数组的所有元素都不是数组,那么该数组称为一维数组. 一维数组的定义方式 在C语言中使用数组必 ...
随机推荐
- Python+Selenium安装及环境配置
一.Python安装 Window系统下,python的安装很简单.访问python.org/download,下载最新版本,安装过程与其他windows软件类似.记得下载后设置path环境变量,然后 ...
- JS-输入金额校验
function clearNoNum(obj){ obj.value = obj.value.replace(/[^\d.]/g,""); //清除"数字&qu ...
- Mysql索引分析:适合建索引?不适合建索引?【转】
数据库建立索引常用的规则如下: 1.表的主键.外键必须有索引: 2.数据量超过300的表应该有索引: 3.经常与其他表进行连接的表,在连接字段上应该建立索引: 4.经常出现在Where子句中的字段,特 ...
- linux下建ftp用户,并限制用户访问路径[转]
目的是:在linux系统上建立ftp用户,并限制其通过ftp访问时,只能访问用户主目录:其主目录显示路径也是“/”,看不到上级目录. 例如,我要建立用户usertest,密码为usertest ...
- Arduino库函数中文说明
#define 常量名 常量值 % 取模运算符 String abc / char abc[n] 定义字符串 pinMode(pin,mode); 用于引脚的初始化 mode包括 INPUT ...
- svn: resource out of date; try updating的解决
问题: svn提交文件时提示错误:resource out of date; try updating.说明该资源版本有问题,尝试更新svn,发现该文件没有可更新的内容.于是查看资源历史,发现有人第一 ...
- 布衣之路(一):VMware虚拟机+CentOS系统安装
前言:布衣博主乃苦逼的Java程序猿一枚,虽然工作中不会涉及系统运维,但是开发的项目总还是要部署到服务器做一些负载均衡.系统兼容性测试.系统集成等等骚操作,而这些测试性的操作不可能直接SSH远程运维的 ...
- tomcat无法打开8080页面
tomcat已启动 app已经正常执行 但不能打开8080管理页面 可能是在webapps目录下没有ROOT目录
- plus、max、Pro、Edge
plus.max.Pro.Edge等后缀到底什么意思? Plus:比好更好.比牛X更牛X 译成中文是:加.和.正的-的意思.比如oneplus中文名就是一加.用于手机命名表示配置更加牛X,最早是由iP ...
- GitHub For Beginners: Don’t Get Scared, Get Started
It's 2013, and there's no way around it: you need to learn how to use GitHub.2 Why? Because it's a s ...