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

电子商务网站备案北京社保网站减员怎么做

电子商务网站备案,北京社保网站减员怎么做,微网站建设微网站建设,河北地图目录 一、队列的概念和结构 ​二、队列的实现 2.1队列的初始化QueueInit 2.2队列的摧毁QueueDestroy 2.3插入结点QueuePush 2.4删除结点QueuePop 2.5返回队头QueueFront 2.6返回队尾QueueBack 2.7判断队列为空QueueEmpty 2.8统计队列数目QueueSize 一、队列的概念和…

目录

一、队列的概念和结构

​二、队列的实现 

2.1队列的初始化QueueInit 

2.2队列的摧毁QueueDestroy

2.3插入结点QueuePush

 2.4删除结点QueuePop

2.5返回队头QueueFront

2.6返回队尾QueueBack

2.7判断队列为空QueueEmpty

2.8统计队列数目QueueSize


一、队列的概念和结构

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

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

 二、队列的实现 

队列也可以数组链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。

当用链表实现时,我们布置的结构体肯定要包含一个val,还需要一个next。

typedef int QDataType;
typedef struct QueueNode
{QDataType val;struct QueueNode* next;
}QNode;

但结构体的布置并非到这里就结束了,当我们有数据要入队时,我们是不是需要让头指针遍历一遍链表找到队尾呢?而且要改变队尾前一个结点next的指向,是不是要传入二级指针呢?同样,当我们布置其他函数体时也会遇到类似的问题。那么如何让我们的代码量化到最简呢?

我们再设置一个结构体来存储相关的数据,这样修改指向时不用再用二级指针,而是只需要修改结构体的值即可。我们用phead指向队列的头结点,便于出队;用ptail指向队列的尾结点,便于入队

typedef struct Queue
{QNode* phead;QNode* ptail;int size;
}Queue;

2.1队列的初始化QueueInit 

void QueueInit(Queue* pq)
{assert(pq);pq->phead = pq->ptail = NULL;pq->size = 0;
}

2.2队列的摧毁QueueDestroy

void QueueDestroy(Queue* pq)
{assert(pq);QNode* cur = pq->phead;while (cur){QNode* next = cur->next;free(cur);cur = next;}pq->phead = pq->ptail = NULL;pq->size = 0;
}

2.3插入结点QueuePush

首先我们要新开结点,其次我们要判断链表是否为空,如果为空,那么ptail和phead都指向新结点;如果不为空,phead的指向不用改变,而ptail的next要只想newnode,然后再把ptail向后移

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->ptail = pq->phead = newnode;}else{pq->ptail->next = newnode;pq->ptail = newnode;}pq->size++;
}

 2.4删除结点QueuePop

首先先让队头指向next结点,接着我们就要判断删除的是不是整个队列的最后一个结点,如果删除的是最后一个结点,那么就会影响到我们ptail的指向,所以我们通过判断避免ptail变成野指针。

void QueuePop(Queue* pq)
{assert(pq);// assert(pq->phead);QNode* del = pq->phead;pq->phead = pq->phead->next;free(del);del = NULL;if (pq->phead == NULL)pq->ptail = NULL;pq->size--;
}

2.5返回队头QueueFront

QDataType QueueFront(Queue* pq)
{assert(pq);assert(pq->phead);return pq->phead->val;
}

2.6返回队尾QueueBack

QDataType QueueBack(Queue* pq)
{assert(pq);assert(pq->ptail);return pq->ptail->val;
}

2.7判断队列为空QueueEmpty

bool QueueEmpty(Queue* pq)
{assert(pq);return pq->phead == NULL;
}

2.8统计队列数目QueueSize

int QueueSize(Queue* pq)
{assert(pq);return pq->size;
}

http://www.yayakq.cn/news/138413/

相关文章:

  • 新乡网站建设哪家好做网站全屏图片拉长代码
  • 免费静态网站模板下载网站建设980元
  • 新注册公司网站建设湖南正规seo优化报价
  • 义乌外贸网站建设加盟网络推广方案怎么写
  • 专业的盐城网站建设wordpress有一个100的缩略图
  • 正规手机网站建设平台网站题头是什么
  • 重庆做网站 外包公司微信指数查询
  • 中山做网站价格wordpress增加图片轮播
  • 营销型企业网站项目策划表外贸公司网站案例
  • 毕节网站网站建设网站如何防止被攻击
  • 网站备案信息被工信部删除58同城的网站建设
  • php做的网站建设亚马逊注册没有公司网站怎么做
  • 莱芜警方网站官网北京百度推广公司
  • 怎么做属于自己的音乐网站手机版网站模板
  • 企业网站招聘可以怎么做外贸网站建设定制开发
  • 可以做线路板网站的背景图有哪些网站可以做ppt
  • 邯郸手机网站开发价格快速做效果图的网站叫什么软件
  • 网站制作哪家专业贵州小程序制作开发
  • 中信建设 官方网站深圳购物商城网站设计
  • 制作一个网站的费用ps切片做网站
  • 怎样创建音乐网站全国网站设计排名
  • 做网站怎么开发程序信息化建设 网站建设等方面
  • 秦皇岛开发区建设局网站企业宣传网站模板下载
  • 个人网站意义建站模板与网站案例展示
  • 做网站主流网站p2f网站系统
  • A华企网络网站建设博物馆设计公司排名
  • 阿里云服务器618seo口碑优化
  • 照片展示网站模板免费下载notepad wordpress
  • 网站名称和备案公司名称不一样在虚拟主机上建设多个网站
  • 贵阳企业网站模板武威建设厅网站