当前位置: 首页 > news >正文

用C语言实现队列的顺序结构

用C语言实现队列的初始化、队列的判空操作、入队操作、出队运算、取队头元素运算、顺序打印队列。

#include<stdio.h>
#define QueueSize 100
typedef char ElemType;
typedef struct//队列结构体
{ElemType data[QueueSize];//保存队中元素int front, rear;//队头和队尾指针
} SqQueue;
//队列的初始化
void InitQueue(SqQueue*qu)
{qu->rear = qu->front;//指针初始化
}
//队列的判空操作
int QueueEmpty(SqQueue*qu)//判断队空运算
{if (qu->front ==qu->rear)//队空{return 1;}else{return 0;}
}
//入队操作
int EnQueue(SqQueue*qu, ElemType x)
{if ((qu->rear + 1) % QueueSize == qu->front) //表示队列已经满了{return 0;}qu->rear = (qu->rear + 1) % QueueSize; //队尾指针进1qu->data[qu->rear] = x;return 1;
}
//出队运算
int DeQueue(SqQueue*qu, ElemType*x)
{if (QueueEmpty(qu)){return 0;}*x = qu->data[qu->front];qu->front = (qu->front + 1) % QueueSize;//队头指针进1return 1;
}
//取队头元素运算
int GetHead(SqQueue*qu, ElemType*x)
{if (qu->rear == qu->front)//队空{return 0;}*x = qu->data[(qu->front + 1) % QueueSize];{return 1;}
}
//顺序打印队列
void printQueue(SqQueue* qu)
{for (int i = qu->front; i != qu->rear; i = (i + 1) % QueueSize){printf("%c", qu->data[i+1]);}printf("\n");
}
void main()
{SqQueue qu;ElemType e;InitQueue(&qu);printf("队%s\n", (QueueEmpty(&qu) == 1 ? "空" : "不空"));printf("a进队\n");EnQueue(&qu,'a');printf("b进队\n");EnQueue(&qu,'b');printf("c进队\n");EnQueue(&qu,'c');printf("d进队\n");EnQueue(&qu,'d');printf("打印队列中的元素:");printQueue(&qu);printf("队%s\n", (QueueEmpty(&qu) == 1 ? "空" : "不空"));GetHead(&qu,&e);printf("队头元素:%c\n",e);printf("出队次序:");printQueue(&qu);printf("\n");
}

运行结果: 

http://www.lryc.cn/news/255795.html

相关文章:

  • Vue 子路由页面发消息给主路由页面 ,实现主页面显示子页面的信息
  • AR技术详解
  • h5或uniapp或微信小程序,实现左上角返回到指定页面,侧滑左滑返回指定页面,安卓物理返回键返沪指定页面解决思路的思考
  • 轻量封装WebGPU渲染系统示例<43>- PBR材质与阴影实(源码)
  • macOS Big Sur/Mac电脑安装vscode显示您没有权限来打开应用程序‘Visual Studio Code‘ 请联系您的电脑或网络管理员问题修复
  • jsp 如何批量改随机人名
  • android项目实战之编辑器集成
  • JAVA程序如何打jar和war问题解决
  • Microsoft 365 Copilot正式上线,如何稳定访问体验?
  • 【安卓】安卓xTS之Media模块 学习笔记(3) VTS测试
  • Go实现http同步文件操作 - 增删改查
  • Spring Boot整合 Spring Security
  • 浅谈低代码
  • Innodb-ruby深入探索Innodb存储结构
  • Echarts的使用 笔记
  • 信息系统工程的基本概念
  • SAP UI5 walkthrough step10 Descriptor for Applications
  • 打造专属小程序,乔拓云模板平台助力商家抢占先机
  • Vue2学习(组件的使用)
  • 基于Spring、SpringMVC、MyBatis开发的游乐场管理系统
  • 数据清洗、特征工程和数据可视化、数据挖掘与建模的应用场景
  • Qt简介、工程文件分离、创建Qt工程、Qt的帮助文档
  • 机器学习与低代码开发:创新驱动的双剑合璧
  • 企业博客SEO:优化SOP,助您提升搜索引擎可见性
  • [HITCON 2017]SSRFme perl语言的 GET open file 造成rce
  • 华为配置Smart Link主备备份示例
  • harmonyOS开发技巧(一)——封装hilog日志
  • npm、yarn常用命令
  • 编译和使用WPS-ghrsst-to-intermediate生成SST
  • 通过静态HTTP实现负载均衡