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

西宁个人网站建设牡丹江地区做网站的公司

西宁个人网站建设,牡丹江地区做网站的公司,wordpress子站点目录,推广app的营销方案(꒪ꇴ꒪ )#xff0c;Hello我是祐言QAQ我的博客主页#xff1a;C/C语言,Linux基础,ARM开发板#xff0c;软件配置等领域博主#x1f30d;快上#x1f698;#xff0c;一起学习#xff0c;让我们成为一个强大的攻城狮#xff01;送给自己和读者的一句鸡汤#x1f914;Hello我是祐言QAQ我的博客主页C/C语言,Linux基础,ARM开发板软件配置等领域博主快上一起学习让我们成为一个强大的攻城狮送给自己和读者的一句鸡汤集中起来的意志可以击穿顽石!作者水平很有限如果发现错误可在评论区指正感谢 在我们的日常生活中队列是一个非常常见的现象。无论是在商店结账还是在公交站等车我们都在使用队列。在计算机科学中队列也是一个重要的数据结构用于处理和组织数据。在这篇文章中我们将详细探讨队列的定义、操作、以及如何用C语言实现队列。 一、队列的定义 队列Queue是一种特殊类型的线性数据结构它遵循特定的操作规则即遵循“先进先出”FIFOFirst-In-First-Out原则。这意味着在队列中首先加入的元素将会首先被移除最后加入的元素将会最后被移除。 当我们想存入1时先移动front队头然后再写入数据1拿数据也是一样但务必保证先移动rear队尾再拿出数据否则将会错位导致出错。 二、顺序队列 1.  队列结构体定义 首先需要定义一个顺序队列我们可以使用结构体来定义一个队列它包含一个数组用于存储队列的数据和三个整数用于表示队列长度、队首和队尾的位置。 typedef int Datatype;//队列的结构体定义 typedef struct Quene {Datatype *q; //用来存放队列的数据int size; //队列的长度int front; //队头int rear; //队尾 }queue; 2.  初始化队列 接下来我们需要初始化队列。在初始化时我们将队首和队尾都设置为0表示队列为空。 //初始化一个队列 queue *init_queue(int size) {queue *que malloc(sizeof(queue));if (que!NULL){que-q calloc(size, sizeof(Datatype));que-size size;que-front 0;que-rear 0;}return que; } 3.  队空和队满 如果我们想要实现入队和出队操作我们需要先考虑队列可能会溢出或下溢的情况因此我们需要判断是否队空或队满。 //队空判断 bool isempty_queue(queue *q) {return (q-rear q-front); }//队满判断 bool isfull_queue(queue *q) {return ((q-rear1)%q-size q-front); } 4.  入队和出队 //入队 bool en_queue(queue *que, Datatype data) {if (isfull_queue(que)){return false;}//先挪rearque-rear (que-rear1)%(que-size);//再入数据que-q[que-rear] data;return true; }//出队 bool de_queue(queue *que, Datatype *data) {if (isempty_queue(que)){return false;}//先挪frontque-front (que-front1)%(que-size);//再取数据*data que-q[que-front];return true; } 队列是计算机科学中的一个基础概念它在许多场景中都有应用如操作系统的任务调度网络的数据包处理等。理解队列的工作原理并能够实现队列对于学习和理解计算机科学的其他概念是非常有帮助的。希望这篇文章能帮助你理解和实现队列。 下面是一个简单的顺序队列举例实现输入正整数添加员工信息入队用这个正整数表示员工号输入负整数出队队首显示该员工的所有信息否则就退出。 员工信息工号、姓名、工资 完整源码 #include stdio.h #include stdlib.h #include stdbool.h#define SIZE 1024 typedef struct people {int number; //工号char name[20]; //姓名int money; //工资 }Datatype;//队列的结构体定义 typedef struct Quene {Datatype *q; //用来存放队列的数据int size; //队列的长度int front; //队头int rear; //队尾 }queue;//初始化一个队列 queue *init_queue(int size) {queue *que malloc(sizeof(queue));if (que!NULL){que-q calloc(size, sizeof(Datatype));que-size size;que-front 0;que-rear 0;}return que; }//队空判断 bool isempty_queue(queue *q) {return (q-rear q-front); }//队满判断 bool isfull_queue(queue *q) {return ((q-rear1)%q-size q-front); }//入队 bool en_queue(queue *que, Datatype data) {if (isfull_queue(que)){return false;}//先挪rearque-rear (que-rear1)%(que-size);//再入数据que-q[que-rear] data;return true; }//出队 bool de_queue(queue *que, Datatype *data) {if (isempty_queue(que)){return false;}//先挪frontque-front (que-front1)%(que-size);//再取数据*data que-q[que-front];return true; }// 添加信息 void init_info(Datatype *data,int n) {data-number n;printf(请输入工人信息\n);while(getchar() ! \n);printf(姓名);scanf(%s, data-name);printf(工资);scanf(%d, data-money); }int main(int argc, char const *argv[]) {queue *q init_queue(SIZE);int n;Datatype data;while (1) {printf(请输入一个正整数或负数\n);scanf(%d, n);if (n 0){init_info(data, n);en_queue(q, data);continue;}else if(n 0){Datatype d;if (de_queue(q, d)) {printf(工号%d姓名%s工资%d\n, d.number, d.name, d.money);} else {printf(队列已空无法出队。\n);}}else{return -1;}}free(q-q);free(q);return 0; } 三、链式队列 链式队列Linked Queue是一种使用链表来实现的队列数据结构。与顺序队列不同链式队列的元素并不直接存储在数组中而是通过链表节点来连接。 并且 由于使用链表实现链式队列的大小可以根据需要动态分配和释放内存避免了固定数组大小可能带来的限制。因此就没有是否队满问题。 1.结构体定义 typedef int Datatype;typedef struct Node {Datatype data;struct Node *next; }node;typedef struct List_queue {node *rear; //队尾指针node *front; //队头指针int size; //链式队列的长度(实际的元素的个数) }L_q;2.创建新节点和判断队空 //创建新节点 node *create_node(Datatype data) {node *new malloc(sizeof(node));if (new ! NULL){new-data data;new-next NULL;}return new; } //链式队列是否为空 bool isempty_list_queue(L_q *q) {return (q-size 0); } 3.初始化队列 //初始化链式队列 L_q *init_list_queue() {L_q *q malloc(sizeof(L_q));if (q!NULL){q-rear NULL;q-front NULL;q-size 0;}return q; } 3.入队 入队操作在链表的末尾添加一个新节点同时更新队尾指针。 //入队 bool en_list_queue(L_q *q, Datatype data) {//先要将数据创建新节点node *new create_node(data);if (newNULL){return false;}//如果是第一次入队new节点既是队尾也是队头if (isempty_list_queue(q)){q-rear new;q-front new;}else //不是第一次入队{//先将尾部节点的next指向new节点q-rear-next new;//尾部节点要变成新节点newq-rear new;}//队的元素个数要1q-size;return true; } 4.出队 出队操作移除链表的第一个节点同时更新队头指针。 //出队 bool de_list_queue(L_q *q, Datatype *data) {if (isempty_list_queue(q)){return false;}else if(q-size 1)//只有一个数据的时候{q-rear NULL;}//在链表不为空的情况下,先拿队头的数据*data q-front-data;//将队头指向下一个节点q-front q-front-next;//链式队列的元素个数-1q-size--;return true; } 5.遍历 //遍历 void display(L_q *q) {if (q-front NULL){return ;}node *p q-front;while(p-next ! NULL){printf(%d , p-data);p p-next;}printf(%d\n, p-data); } 简单示例当我们输入正数时入队并遍历整个队列当我们输入负数时出队一个元素并再次遍历队列输入0时退出。 int main(int argc, char const *argv[]) {L_q *q init_list_queue();int num;Datatype data;while(1){scanf(%d, num);if(num 0){en_list_queue(q, num); display(q); }else if(num 0){de_list_queue(q, data);display(q); }else{break;}}return 0; } 四、结语 队列作为一种基本的数据结构在我们的编程生涯中扮演着重要的角色。希望这篇文章提供了一个清晰、详细的队列概述帮助你理解队列的基本概念和操作以及如何用C语言实现队列。 选择顺序队列还是链式队列取决于实际应用的需求。如果你需要一个固定大小的队列可以考虑使用顺序队列。如果你希望队列大小能够根据需要进行动态调整那么链式队列更适合。在大多数情况下链式队列具有更好的扩展性和灵活性。 更多C语言、Linux系统、ARM板实战和数据结构相关文章关注专栏 手撕C语言 玩转linux 脚踢数据结构 6818ARM开发板实战 写在最后 今天的分享就到这啦~觉得博主写的还不错的烦劳 一键三连喔~感谢关注
http://www.yutouwan.com/news/323067/

相关文章:

  • 做门窗投标网站西安网站建设哪里好
  • 建设网站选多大的空间合适企业网站的公司和产品信息的介绍与网络营销关系
  • 小学微机作业做网站网站后期维护内容
  • 邢台人才网官网首页seo是什么意思如何实现
  • 网站开发 加二维扫码一个网站绑定2个域名
  • 做卫浴软管的网站seo排名赚下载
  • 松江工业区网站建设网站seo优化方法
  • 软件 网站开发合作协议mysql 注册网站
  • 公司网站怎样实名认证奥派网站建设
  • 广东蕉岭县建设局网站网站建设 江苏
  • wordpress建站购买江门众瞬网络科技有限公司
  • 多种郑州网站建设软件开发在哪能看
  • 微信订阅号做微网站wordpress登录页面打不开
  • 湘icp备 网站建设 农业 湖南wordpress文章略缩图
  • 3030wa网站开发学校找网站推广
  • 代刷网站搭建教程产品质量推广营销语
  • ps可以做网站动态图治多县网站建设公司
  • 网站开发外包维护合同appstar
  • 凡客建站网站下载梧州论坛 红豆社区
  • 网站搭建找谁电商网站建设济南建网站
  • 科技公司网站案例新人做外贸流程
  • 网站设计过程介绍汽车营销活动策划方案
  • 网站到期请续费白城网站建设
  • 班级网站制作教程怎么制作网页链接在微信上发
  • 电子商务网站建设与维护致谢词怎么写软文
  • 网站建设xiu021什么游戏不用登录直接玩
  • 毕业设计(论文)-潮州美食网网站建设.doc 免费下载企业网页申请制作步骤
  • 网站开发做什么简单wordpress 扁擔
  • 购物商城网站制作cms 免费
  • 做境外域名网站如何找外链资源