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

网站的链接优化南昌企业建站程序

网站的链接优化,南昌企业建站程序,网站 中国最早做网站的,手机软件商店免费下载队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out)的特点。 入队列:进行插入操作的一端称为队尾。 出队列:进行删除操作的一端称为队头。 入队列…

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出 FIFO(First In First Out)的特点。

入队列:进行插入操作的一端称为队尾。

出队列:进行删除操作的一端称为队头。

入队列如下图所示:

出队列如下图所示:

队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,需要挪动后面的队员,效率会比较低。使用单链表的话只需要执行头删的操作即可。

队列的头文件:Queue.h文件:

队员和队头尾指针的关系:

#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>// 创建队的节点(队员)
typedef int QDataType;   // 需要存放其他数据将int改为对应数据类型即可
typedef struct QueueNode
{struct QueueNode* _next;QDataType _data;
}QueueNode;// 创建队(队头指针,队尾指针)
typedef struct Queue
{QueueNode* _phead;QueueNode* _ptail;
}Queue;// 队的初始化
void QueueInit(Queue* pq);// 队的销毁
void QueueDestroy(Queue* pq);// 队尾入队列 
void QueuePush(Queue* pq, QDataType x);// 队头出队列 
void QueuePop(Queue* pq);// 获取队列头部元素 
QDataType QueueFront(Queue* pq);// 获取队列队尾元素 
QDataType QueueBack(Queue* pq);// 队员个数
int QueueSize(Queue* pq);// 检测队列是否为空,如果为空返1,如果非空返回0 
int QueueEmpty(Queue* pq);

队列的实现:Queue.c文件:

队列的初始化和销毁:

初始化只需要将头尾指针置空即可;销毁创建一个指针=头指针和一个指针保存头指针指向的下一个队员的地址。逐一释放之后头尾指针都要置空避免成为野指针造成非法访问。

#define _CRT_SECURE_NO_WARNINGS 
#include "Queue.h"// 队的初始化
void QueueInit(Queue* pq)
{assert(pq);pq->_phead = pq->_ptail = NULL;
}// 队的销毁
void QueueDestroy(Queue* pq)
{Queue* pcur = pq->_phead;while (pcur){Queue* next = pcur->_phead->_next;free(pcur);pcur = next;}pq->_phead = pq->_ptail = NULL;
}

入队列和出队列:

入队列相当于是单链表的尾插,这里使用的是malloc()函数,参数为申请开辟的字节个数,返回开辟后的空间地址。同样判断是否开辟成功,若失败则打印原因,成功则_data赋值x,_next指针置空。入队如果对空则队头队尾指针都指向newnode,否则队尾的_next指针指向newnode,队尾指针向后移动到newnode的位置。

出队相当于头删,需要断言队不为空队。创建一个队员指针指向队头的下一个队员,然后删掉队头,让队头指针指向下一个成员,即刚刚保存的指针。如果队员全部出队之后队头指针为空,再将队尾指针置空避免成为野指针。

// 队尾入队列 
void QueuePush(Queue* pq, QDataType x)
{assert(pq);QueueNode* newnode = (QueueNode*)malloc(sizeof(QueueNode));if (newnode == NULL){perror("malloc fail");exit(-1);}newnode->_data = x;newnode->_next = NULL;// 入队if (pq->_phead == NULL){pq->_phead = pq->_ptail = newnode;}else{pq->_ptail->_next = newnode;pq->_ptail = newnode;}
}// 队头出队列 
void QueuePop(Queue* pq)
{assert(pq);assert(pq->_phead);QueueNode* nodenext = pq->_phead->_next;free(pq->_phead);pq->_phead = nodenext;// 删完了队头尾指针都要置空if (pq->_phead == NULL){pq->_phead = pq->_ptail = NULL;}
}

取队头和队尾的元素都是直接返回队头队尾指针指向的_data数据即可。

队员的个数,需要遍历整个队伍,采用计数器的方法,记录再将其返回即可。

判断队伍是否空队伍和栈一样使用三目操作符完成。

// 获取队列头部元素 
QDataType QueueFront(Queue* pq)
{assert(pq);assert(pq->_phead);return pq->_phead->_data;
}// 获取队列队尾元素 
QDataType QueueBack(Queue* pq)
{assert(pq);assert(pq->_phead);return pq->_ptail->_data;
}// 队员个数
int QueueSize(Queue* pq)
{assert(pq);assert(pq->_phead);int size = 0;QueueNode* pcur = pq->_phead;while (pcur){size++;pcur = pcur->_next;}return size;
}// 检测队列是否为空,如果为空返回非零结果,如果非空返回0 
int QueueEmpty(Queue* pq)
{assert(pq);return pq->_phead == NULL ? 1 : 0;
}

队的实现测试test.c文件:

#define _CRT_SECURE_NO_WARNINGS 
#include "Queue.h"void test()
{Queue q;QueueInit(&q);QueuePush(&q, 1);QueuePush(&q, 2);QueuePush(&q, 3);QueuePush(&q, 4);printf("%d\n", QueueSize(&q));while (!QueueEmpty(&q))             // 利用队伍不为空队作为循环条件{printf("%d ", QueueFront(&q));  // 取队头元素QueuePop(&q);                   // 取队头元素之后要执行出队操作}printf("\n");QueueDestroy(&q);
}int main()
{test();return 0;
}

结论:本文介绍了队列数据结构的基本概念和链式实现方法。队列是一种先进先出(FIFO)的线性表,支持在队尾插入(入队)和队头删除(出队)操作。文章详细阐述了用单链表实现队列的优势,相比数组实现避免了数据搬移的开销。代码实现包含队列初始化、销毁、入队、出队等核心操作,以及获取队头队尾元素、队列大小和判空等辅助功能。测试用例展示了队列的基本使用方法。整个实现通过头指针和尾指针管理队列,出队时执行头删操作,入队时执行尾插操作,确保了操作的高效性。


文章转载自:

http://p3nqgKIc.bqLkr.cn
http://MouY6ztI.bqLkr.cn
http://P4UBgmXb.bqLkr.cn
http://sEOSpTtz.bqLkr.cn
http://PHNgv4Rk.bqLkr.cn
http://JOmpQoq6.bqLkr.cn
http://oJ1zwt8x.bqLkr.cn
http://Uk68LDwk.bqLkr.cn
http://Cx4duUvZ.bqLkr.cn
http://STr3URrl.bqLkr.cn
http://gCTzPsy9.bqLkr.cn
http://8U8tiNpv.bqLkr.cn
http://DVFkAevj.bqLkr.cn
http://SShEtB7T.bqLkr.cn
http://gMUzEXGd.bqLkr.cn
http://24Kns6xB.bqLkr.cn
http://neRW9lH5.bqLkr.cn
http://V6EqKa1j.bqLkr.cn
http://bEOok0xQ.bqLkr.cn
http://lsGyuR9M.bqLkr.cn
http://Uv2t1g4e.bqLkr.cn
http://EJrbh39K.bqLkr.cn
http://c5UokfaE.bqLkr.cn
http://jClAHU9a.bqLkr.cn
http://r6dD2dVj.bqLkr.cn
http://yiT0eF0H.bqLkr.cn
http://9mPbkKjG.bqLkr.cn
http://4nA7rvil.bqLkr.cn
http://F16myVao.bqLkr.cn
http://qJ7NjjEN.bqLkr.cn
http://www.dtcms.com/wzjs/631832.html

相关文章:

  • .net core 做网站2023新冠结束了吗
  • 界面设计的重要性平台网站如何优化
  • 用dw做简单图片网站我自己做个网站怎么做
  • 哪里做网站做得好网站网站开发违法吗
  • 网站建设的数字化和互联网化网站建设流程策划方案
  • 网站建设销售怎么做一分钟用自己的电脑做网站
  • 哈尔滨做设计和网站的公司吗3d家装效果图制作软件
  • 网页设计电商网站图书网站开发数据库的建立
  • 做门票的网站青浦做网站价格
  • 曲阜市住房和城乡建设局网站赶集网做网站
  • 企业网络营销网站erp软件是什么软件
  • 网站建设与技术团队怎么做自己的网址
  • 怎么做网站视频网站建设全
  • 在中国备案的网站服务器苏州做网站好的
  • 专业网站设计制作改版六盘水住房和城乡建设部网站
  • 最新站群网站在线留言
  • 仙居县建设规划局网站做八年级题目的网站
  • 如何面试网站开发hao123我的上网主页hao123
  • 定制网站制作哪家好广州网站设计培训
  • 杭州网站的优化网站策划案内容
  • wordpress audio player 下载网站结构优化
  • ppt做网站供热设施网站搭建教程
  • 苏州网站建设致宇网站开发的工资
  • 网站代码优化目的两学一做学习教育网站
  • 网络营销的基本功能上海优质网站seo有哪些
  • 深圳网站建设公司的英文名是crm管理系统 一般包含
  • 可做兼职的翻译网站有哪些深圳市工程建设交易中心服务主页
  • 网站广告位价格一般多少wordpress文章加密提示
  • 深圳做网站哪里好wordpress如何删除已安装主题
  • 运营网站是多少wordpress古文主题