最简约的网站360的网站排名怎么做

张小明 2026/1/8 19:46:15
最简约的网站,360的网站排名怎么做,资源专业网站优化排名,网站建设扬州1. 队列的概念及结构队列#xff1a;只允许在一端进行插入数据操作#xff0c;在另一端进行删除数据操作的特殊线性表#xff0c;队列具有先进先出 FIFO(First In First Out)。入队列#xff1a;进行插入操作的一端称为队尾。出队列#xff1a;进行删除操作的一端称为队头…1. 队列的概念及结构队列只允许在一端进行插入数据操作在另一端进行删除数据操作的特殊线性表队列具有先进先出 FIFO(First In First Out)。入队列进行插入操作的一端称为队尾。出队列进行删除操作的一端称为队头。队列和栈是有所不同的比如入栈顺序是1 2 3 4但是出栈顺序可以有多种不一定是 1 2 3 4因为它可以边进边出所以是一个一对多的关系而队列的入队列顺序和出队列顺序是一样的是一个一对一的关系正是基于队列的这种性质它可以用于保持公平性例如做一个抽号机比如吃饭排队拿取号码先来的先拿后来的后拿。也可以利用队列来做一个好友推荐广度优先遍历假如要给小徐推荐好友那么就以小徐为起点首先让小徐进入队列然后让小徐出队列第一圈结束的同时让小徐的好友小明和小王入队列这也就意味着当小徐出队列时队列中剩下的都是小徐的朋友然后按照顺序让小明出队列出队列的同时让小明的朋友入队列然后让小王出队列第二圈结束出队列的同时让小王的朋友入队列这时小徐的朋友都出队列了剩下的都是小徐朋友的朋友也就是处于第三圈上的好友这个时候就可以将队列中的好友推荐给小徐不断循环这个步骤就可以一步一步扩大好友圈。2. 队列的功能实现队列也可以数组和链表的结构实现使用链表的结构实现更优一些因为如果使用数组的结构出队列在数组头上出数据效率会比较低。那么确定了使用链表就要考虑是使用双向链表还是单向链表因为双向链表肯定是可以实现队列功能的但是我们优先考虑能不能使用单链表来实现如果单链表能实现就不使用双向链表因为单向链表比双向链表更加节省空间。2.1 一级指针还是二级指针在数据结构的学习中已经讨论过很多次到底是用一级指针还是二级指针的问题我也混淆了很久最简单的记忆方法就是去看你到底要不要去通过形参ppehad改变实参plist若不不想改变实参那形参就直接用一级指针接收即可如果想要通过形参改变实参那么就使用二级指针接收因为只有对二级指针进行一次解引用才能读取到实参部分然后对*pphead的改变就相当于是对plist的改变。在队列的实现中因为队列的本质是单链表我在学习单链表的过程中是使用二级指针来完成相应的功能的在学习双向链表中是使用一级指针来完成相应的功能的这是因为在双向链表中引入了“头节点”也就是“哨兵位”因为指向哨兵位的指针plist是不需要被改变的所以用一级指针接收即可这一点我在双向链表的章节中也提到过所以对于这节中的队列为了避免二级指针的繁琐也直接使用一级指针来接收但是是使用一种新的方式来解决这个问题直接将指向链表头节点和尾节点的指针封装成一个结构体所以想要改变这两个指针就相当于改变这个结构体比如要改变实参int p那形参就传int*p也就是接收整型变量p的地址p要改变实参int* p那就传int** pp也就是接收指针p的地址所以现在要改变实参结构体变量stuct Name p那么形参就传struct Name* p(也就是接收结构体变量p的地址p)这就转化为了只需要传一级指针而不是二级指针。typedef int QDataType; // 链式结构表示队列 typedef struct QListNode { struct QListNode* next; QDataType val; }QNode; // 队列的结构 typedef struct Queue { QNode* phead; QNode* ptail; int size;//存入一个数据就计数一次方便后面计数函数的实现同时也降低了时间复杂度 }Queue; // 初始化队列 void QueueInit(Queue* pq); // 队尾入队列 void QueuePush(Queue* pq, QDataType x); // 队头出队列 void QueuePop(Queue* pq); // 获取队列头部元素 QDataType QueueFront(Queue* pq); // 获取队列队尾元素 QDataType QueueBack(Queue* pq); // 获取队列中有效元素个数 int QueueSize(Queue* pq); // 检测队列是否为空 bool QueueEmpty(Queue* pq); // 销毁队列 void QueueDestroy(Queue* pq);这种方法既避免了传多个参数又避免了传二级指针2.2 队列的初始化代码实现// 初始化队列 void QueueInit(Queue* pq) { assert(pq); pq-phead NULL; pq-ptail NULL; pq-size 0; }2.3 入队列的实现// 队尾入队列 void QueuePush(Queue* pq, QDataType x) { assert(pq); QNode* newnode (QNode*)malloc(sizeof(QNode));//开辟动态空间 if (newnode NULL) { perror(malloc fail); return; } //进行初始化 newnode-val x; newnode-next NULL; //进行插入 if (pq-ptail NULL) { pq-phead pq-ptail newnode; } else { pq-ptail-next newnode; pq-ptail newnode; } pq-size; }2.4 出队列的实现// 队头出队列 void QueuePop(Queue* pq) { assert(pq); assert(pq-size ! 0); //一个节点的情况 if (pq-phead -next NULL) { free(pq-phead);//free的是指针指向的节点而不是释放指针注意区别 pq-phead pq-ptail NULL; } //多个节点的情况 else { QNode* next pq-phead-next; free(pq-phead); pq-phead next; } pq-size--; }注意这里面的free函数释放的是指针所指向的节点的空间也就是malloc动态开辟的内存空间而不是指针pq-phead或者pq-ptail。2.5 队列其他功能的实现// 获取队列头部元素 QDataType QueueFront(Queue* pq) { assert(pq); assert(pq-phead);//头节点如果为NULL说明没有节点存入那读取就没有意义了 return pq-phead-val; } // 获取队列队尾元素 QDataType QueueBack(Queue* pq) { assert(pq); assert(pq-ptail);//尾节点如果为NULL说明没有节点存入那读取就没有意义了 return pq-ptail-val; } // 获取队列中有效元素个数 int QueueSize(Queue* pq) { assert(pq); return pq-size; } // 检测队列是否为空 bool QueueEmpty(Queue* pq) { asswet(pq); return pq-size 0; } // 销毁队列 void QueueDestroy(Queue* pq) { assert(pq); QNode* pcur pq-phead; while (pcur) { QNode* next pcur-next; free(pcur); pcur next; } pq-phead pq-ptail NULL; pq-size0; }
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

重庆网站设计费用网站首页模板代码

各位同仁,各位技术爱好者,大家好!今天,我们将深入探讨一个在软件设计和JavaScript语言中都极具魅力的概念——“代理”(Proxy)。在软件工程的广阔天地中,“代理”以其独特的魅力,帮助…

张小明 2026/1/6 13:26:23 网站建设

人力资源公司网站建设购物网站的设计思路

探索EmotiVoice在元宇宙中的语音交互潜力 在虚拟世界日益逼近“以假乱真”的今天,我们对数字角色的期待早已超越了简单的动作响应与机械发声。当一个NPC说出“我很高兴见到你”时,如果语气平淡如读稿,那种沉浸感瞬间就会被打破。正是这种对真…

张小明 2026/1/7 5:35:21 网站建设

电子商务网站建设论文开题报告四川网站建设seo优化

探索 Konqueror 浏览器:功能与使用指南 1. ALT - F2 运行框与页面重载 ALT - F2 运行框功能强大,它与 Konqueror 地址栏类似,能启动 Konqueror 并显示你输入的任何 URL 对应的网页。若页面停止加载或加载不正常,可点击“重新加载”按钮重试,但有时即便重新加载,页面仍可…

张小明 2026/1/7 7:57:06 网站建设

什么是网站易用性建站域名

卡顿监测的核心是检测主线程是否被长时间阻塞,导致无法及时更新 UI。卡顿的本质帧率与刷新率iOS 屏幕刷新率:60Hz(ProMotion 120Hz)每帧理论时间:16.67ms(60Hz)或 8.33ms(120Hz&…

张小明 2026/1/7 0:42:44 网站建设

有做lol直播网站网络推广工作具体需要做些什么

打造您的专属家庭影院:Jellyfin Android TV客户端深度体验指南 【免费下载链接】jellyfin-androidtv Android TV Client for Jellyfin 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-androidtv 想要在家中享受影院级的观影体验吗?Jellyf…

张小明 2026/1/5 4:57:09 网站建设