#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
typedef struct _Queue
{
int max_size;
int rear;
int lenth;
int* data;
}Queue;
Queue* Create(int n)
{
Queue* Q = (Queue*)malloc(sizeof(Queue));
Q->data = (int*)calloc(n, sizeof(int));
Q->lenth = 0;
Q->max_size = n;
Q->rear = 0;//注意:当循环队列内部元素个数为0时,rear无意义。
return Q;
}
int Push(Queue* Q, int e)
{
if (Q->lenth == 0)
{
Q->rear = 0;
Q->lenth = 1;
Q->data[0] = e;
return 1;
}
if (Q->lenth >= Q->max_size)
{
return 0;
}
Q->rear = (Q->rear + 1) % Q->max_size;
Q->data[Q->rear] = e;
Q->lenth++;
return 1; }
int Get_head(Queue* Q)
{
int t = Q->rear - Q->lenth + 1;
if (t < 0)
{
t = Q->max_size + t;
}
return Q->data[t];
}
int Full(Queue* Q)
{
if (Q->lenth >= Q->max_size)
return 1;
else
return 0;
}
int Empty(Queue* Q)
{
if (Q->lenth == 0)
return 1;
else
return 0;
}
void Print(Queue* Q)
{
int t = Q->rear - Q->lenth + 1;
if (t < 0)
{
t = Q->max_size + t;
}
for (int i = 0; i < Q->lenth; i++)
{
printf("%d ", Q->data[t]);
t = (t + 1) % Q->max_size;
}
}
void Read(Queue* Q)
{
char buf[12];
while (1)
{
scanf("%s", buf);
if (buf[0] == 'n')
return;
if (buf[0] == 'y')
return;
Push(Q, atoi(buf));
}
}
void Delete(Queue* Q, int e)
{
int t = Q->rear - Q->lenth + 1;
if (t < 0)
{
t = Q->max_size + t;
}
while (Q->data[t] != e)
{
Q->lenth -= 1;
t = (t + 1) % Q->max_size;
}
if (Get_head(Q) == e)
Q->lenth -= 1;
}
int main()
{
int n;
scanf("%d", &n);
Queue* Q = Create(n);
Read(Q);
int elem;
scanf("%d", &elem);
Delete(Q,elem);
Print(Q);
putchar('\n');
printf("%d", Get_head(Q));
return 0;
}

最新文章

  1. 微信公众平台开发 微信JSSDK开发
  2. select * from table 时间长
  3. POSTMAN中各种请求方式的区别
  4. 针对PIL中ImageDraw.py报错的解决方案
  5. 发票OCR识别/票据OCR自动识别
  6. Fatal error: Class &#39;LearningPHP1\mysqli&#39; not found
  7. No grammar constraints (DTD or XML schema).....两种解决方法
  8. Linux 桌面玩家指南:14. 数值计算和符号计算
  9. 使用 线性规划 解决 数字 排序问题, +Leapms模型
  10. DS1-13
  11. PyCharm for windows 快捷功能(图片形式讲解)
  12. CSS3布局之box-flex的使用
  13. C#项目获取当前时间的农历时间
  14. [转]python3之os与sys模块
  15. UART简介及与COM口的区别
  16. 第一章 CSS基础
  17. 软件工程团队项目第一个Sprint评论
  18. SSM+Maven(教程二):Idea快速入门SSM+Maven框架。
  19. ui-router(三)controller与template
  20. C++复习7.虚表的概念

热门文章

  1. c++:-4
  2. acunetix_14.7安装破解
  3. 如何形象简单地理解java中只有值传递,而没有引用传递?
  4. 接口测试使用Python装饰器
  5. 双webview模式,子窗口打不开或者无法切换
  6. 什么是Netty编解码,Netty编解码器有哪些?Protostuff怎么使用?
  7. 给小白的 PG 容器化部署教程(下)
  8. c++ FHQ Treap
  9. 我的第一个springboot starter
  10. 微信小程序使用 ECharts