[数据结构] 用C语言模拟一个简单的队列程序
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include<math.h> //队列长度自定义
#define ASIZE 1001
#define MAX_INT 2147483647 typedef struct quque {
int data[ASIZE];
int front;
int rear;
}Queue; //空0,满-1,正常 1
int notEmpty(Queue *queue)
{
if ((*queue).front == (*queue).rear)
return ;
else if ( ((*queue).rear+)%ASIZE == (*queue).front )
return -;
else return ;
} //测量队列长度
int lengthOfQueue (Queue (*queue))
{
if ((*queue).rear >= (*queue).front)
return (*queue).rear-(*queue).front;
else return (*queue).rear + ASIZE - (*queue).front;
} //push
void pushToQueue(Queue (*queue), int one)
{
if (notEmpty(queue) == -)
{
printf("⚐队列已满,无法PUSH");
return;//队满
}
(*queue).data[(*queue).rear] = one;
(*queue).rear = ((*queue).rear +)%ASIZE;
} //pop,队空返回max_int
int popFromQueue(Queue (*queue))
{
if (!notEmpty(queue))
{
printf("⚐队列为空,无法POP");
return MAX_INT;
}
int pop = (*queue).data[(*queue).front];
(*queue).front = ((*queue).front + )%ASIZE;
return pop;
}
//仅读取队首,不出队
int readTopOfQueue(Queue (*queue))
{
if (notEmpty(queue))
return (*queue).data[(*queue).front];
else
{
printf("⚐队列为空,无法读取");
return -;
}
}
//创建队列
Queue* creatAQueue()
{
Queue *queue = (Queue *)malloc(sizeof(Queue));
(*queue).front = ;
(*queue).rear = ;
return queue;
} //打印队列
void printQueue(Queue (*queue))
{
if ((*queue).front == (*queue).rear)
{
printf("\n⚐队列为空\n");
return;
}
printf("\n队首的下标为 %d ,队尾的下标为 %d \n队列为:",(*queue).front,(*queue).rear);
for (int i = (*queue).front ; i != (*queue).rear ; i = (i+)%ASIZE )
{
printf (" %d ",(*queue).data[i]);
}
printf("\n");
} int main()
{
Queue *queue = creatAQueue();
int order;
int one;
while () {
printf("\n☀︎命令:1-进行入队操作,2-进行出队操作,3-打印队列\n✎请输入指令:");
scanf("%d",&order);
switch (order) {
case :
printf("\n✎请输入需要入队的数值:");
scanf("%d",&one);
if (notEmpty(queue) == -)
{
printf("\n⚐队列已满\n");
break;
}
pushToQueue(queue,one);
break;
case :
if (notEmpty(queue) == )
{
printf("\n⚐队列还是空的哟~\n");
break;
}
one = popFromQueue(queue);
printf("\n出队的数据为%d\n",one);
break;
case :
printQueue(queue);
break;
default:
printf("\n⚐指令有误\n");
break;
}
}
return ;
}
[数据结构] 用C语言模拟一个简单的队列程序的更多相关文章
- 用C语言编写一个简单的词法分析程序
问题描述: 用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表.如果产生词法错误,则显示错误信息.位置,并试图从错误中恢复.简单的恢复方法 ...
- socket实例C语言:一个简单的聊天程序
我们老师让写一个简单的聊天软件,并且实现不同机子之间的通信,我用的是SOCKET编程.不废话多说了,先附上代码: 服务器端server.c #include <stdio.h> #incl ...
- java 使用LinkedList模拟一个堆栈或者队列数据结构
近期在复习下java基础,看了下java基础,在看到集合时突然发现想起来曾经面试有一道笔试题:模拟一个堆栈或者队列数据结构,当时还没做出来,今天就写一下,首先得明确堆栈和队列的数据结构 堆栈:先进后出 ...
- 使用LinkedList模拟一个堆栈或者队列数据结构
使用LinkedList模拟一个堆栈或者队列数据结构. 堆栈:先进后出 如同一个杯子. 队列:先进先出 如同一个水管. import java.util.LinkedList; public cl ...
- java集合 collection-list-LinkedList 模拟一个堆栈或者队列数据结构。
/* 使用LinkedList模拟一个堆栈或者队列数据结构. 堆栈:先进后出 如同一个杯子. 队列:先进先出 First in First out FIFO 如同一个水管. */ import jav ...
- Java LinkedList特有方法程序小解 && 使用LinkedList 模拟一个堆栈或者队列数据结构。
package Collection; import java.util.LinkedList; /* LinkedList:特有的方法 addFirst()/addLast(); getFirst( ...
- 面试题:使用LinkedList来模拟一个堆栈或者队列数据结构
请使用LinkedList来模拟一个堆栈或者队列数据结构. 堆栈:先进后出 First In Last Out (FILO) 队列:先进先出 First In First Out (FIFO) 我 ...
- 用Go语言实现一个简单的聊天机器人
一.介绍 目的:使用Go语言写一个简单的聊天机器人,复习整合Go语言的语法和基础知识. 软件环境:Go1.9,Goland 2018.1.5. 二.回顾 Go语言基本构成要素:标识符.关键字.字面量. ...
- 编写一个简单的C++程序
编写一个简单的C++程序 每个C++程序都包含一个或多个函数(function),其中一个必须命名为main.操作系统通过调用main来运行C++程序.下面是一个非常简单的main函数,它什么也不干, ...
随机推荐
- vue开发常用配置
// src/main.js function setHtmlFontSize() { const baseSize = 100 // 由于浏览器字体最小为12px,故这个值要设置大一点,保证计算所得 ...
- P3396 哈希冲突
很好的根号算法(这种思想好像叫根号分治?) 首先,暴力是Ο(n2)的 考虑预处理: for(p=1;p<=n;p++) //枚举模数 ans[p][i%p]+=value[i]; 看似很好但还是 ...
- 模块--random
random模块 1 random.random() print(random.random()) 0-1 之间随机小数 不包含1 2 random.uniform(a,b) ...
- git错误记录及解决
一.git每次提交.拉取都要输用户名和密码 问题描述:每次提交.拉取文件时都要输用户名和密码,特别麻烦 原因:在git上面注册了用户名a,然后本机安装了TortoiseGit工具,登录时会在本机C:\ ...
- day 22 - 2 面向对象练习
练习一 在终端输出如下信息 小明,10岁,男,上山去砍柴小明,10岁,男,开车去东北小明,10岁,男,最爱大保健老李,90岁,男,上山去砍柴老李,90岁,男,开车去东北老李,90岁,男,最爱大保健老张 ...
- Python 中写一个装饰器实现限制频率访问
1.思路: 首先要在装饰器中确定访问的方法名, 第一次可以访问成功,之后要在规定的时间(变量)之后才可以访问. 初始应该有一个变量为0;访问成功之后把当前的时间赋值给这个变零. 这样再次访问时把当前的 ...
- ubuntu 装机必备
在github上下载高博的slambook(https://github.com/gaoxiang12/slambook)在3rdparty文件夹中有安装包. 1. 安装Eigen库 sudo apt ...
- 2018-2019-2 20165237《网络对抗技术》Exp2 后门原理与实践
2018-2019-2 20165237<网络对抗技术>Exp2 后门原理与实践 一.实践目标 使用netcat获取主机操作Shell,cron启动 使用socat获取主机操作Shell, ...
- oracle参数MEMORY_TARGET太小无法启动的解决过程
环境: windows server datacenter 4G,4x2=8处理器 oracle 11g 错误如下 ORA-: Specified value of MEMORY_TARGET is ...
- 数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)
1. 数据库有六大约束 主键(primary key) 外键(foreign key):被参照的键必须有唯一约束或是主键 非空(not null) 默认(default) 检查(check):orac ...