#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语言模拟一个简单的队列程序的更多相关文章

  1. 用C语言编写一个简单的词法分析程序

    问题描述: 用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表.如果产生词法错误,则显示错误信息.位置,并试图从错误中恢复.简单的恢复方法 ...

  2. socket实例C语言:一个简单的聊天程序

    我们老师让写一个简单的聊天软件,并且实现不同机子之间的通信,我用的是SOCKET编程.不废话多说了,先附上代码: 服务器端server.c #include <stdio.h> #incl ...

  3. java 使用LinkedList模拟一个堆栈或者队列数据结构

    近期在复习下java基础,看了下java基础,在看到集合时突然发现想起来曾经面试有一道笔试题:模拟一个堆栈或者队列数据结构,当时还没做出来,今天就写一下,首先得明确堆栈和队列的数据结构 堆栈:先进后出 ...

  4. 使用LinkedList模拟一个堆栈或者队列数据结构

    使用LinkedList模拟一个堆栈或者队列数据结构. 堆栈:先进后出  如同一个杯子. 队列:先进先出  如同一个水管. import java.util.LinkedList; public cl ...

  5. java集合 collection-list-LinkedList 模拟一个堆栈或者队列数据结构。

    /* 使用LinkedList模拟一个堆栈或者队列数据结构. 堆栈:先进后出 如同一个杯子. 队列:先进先出 First in First out FIFO 如同一个水管. */ import jav ...

  6. Java LinkedList特有方法程序小解 && 使用LinkedList 模拟一个堆栈或者队列数据结构。

    package Collection; import java.util.LinkedList; /* LinkedList:特有的方法 addFirst()/addLast(); getFirst( ...

  7. 面试题:使用LinkedList来模拟一个堆栈或者队列数据结构

    请使用LinkedList来模拟一个堆栈或者队列数据结构. 堆栈:先进后出 First In Last Out  (FILO) 队列:先进先出 First In First Out  (FIFO) 我 ...

  8. 用Go语言实现一个简单的聊天机器人

    一.介绍 目的:使用Go语言写一个简单的聊天机器人,复习整合Go语言的语法和基础知识. 软件环境:Go1.9,Goland 2018.1.5. 二.回顾 Go语言基本构成要素:标识符.关键字.字面量. ...

  9. 编写一个简单的C++程序

    编写一个简单的C++程序 每个C++程序都包含一个或多个函数(function),其中一个必须命名为main.操作系统通过调用main来运行C++程序.下面是一个非常简单的main函数,它什么也不干, ...

随机推荐

  1. 对于Sobel算子的学习

    本来想说很多目前对于 Sobel 算子的认识,但最终还是觉得对于其掌握程度太低,没有一个系统的理解,远不足以写博客,但为了12月不至于零输出,还是决定把自己学习过程中找到的相关资料进行分享. 等到一月 ...

  2. 新版本的Python问题

    1.在print方面,新版本需要加括号,调用函数时也是如此,比如: import string s='the quick brown fox jumped to the lazy dog' print ...

  3. vue 点击展开显示更多 点击收起部分隐藏

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 移除文件(git rm)

    git rm`命令会把文件从已跟踪列表(及暂存区)中移除,并且移除把文件从工作目录中移除,这样下一次你就不会在未跟踪文件列表中看到这些文件了. 如果你只是简单的把文件从工作目录移除,而没有使用git ...

  5. vue内置的标签(组件)

    component:用于动态组件,查看博文vue学习之组件. <component :is="componentId"></component> trans ...

  6. CSS字体渐变 & 隐藏浏览器滚动条 & grid布局(转载)

    字体渐变  https://www.zhangxinxu.com/study/201104/css3-text-gradient-2.html 隐藏浏览器滚动条  https://blog.csdn. ...

  7. Convolutional Pose Machines(理解)

    0 - 背景 人体姿态识别存在遮挡以及关键点不清晰等主要挑战,然而,人体的关键点之间由于人体结构而具有相互关系,利用容易识别的关键点来指导难以识别关键点的检测,是提高关键点检测的一个思路.本文通过提出 ...

  8. QQ小橙团队排表机器人使用方法

    版权声明 别瞎JB玩坏了...一个群一个群导入很累的 联系QQ: 986859110 目录 网页版使用说明 登录和权限操作 团队和模板选择操作 模板使用案例 团队面板操作 老板管理 人员管理 QQ群机 ...

  9. python3列表

    Python3 列表 list python的矩阵 python中矩阵可以用双层列表表示 Python列表脚本操作符 len([1, 2, 3]) 3 长度 [1, 2, 3] + [4, 5, 6] ...

  10. safari下载中文文件名乱码

    原因:响应头设置content-disposition,主要遵循 RFC 5987标准. response.setHeader("content-disposition",&quo ...