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

软件开发公司网站模板wordpress创建文章

软件开发公司网站模板,wordpress创建文章,做网站做手机站还是自适应站,中国建设网官方数据结构(队列) 什么是队列? 队列和栈类似,也是一类特殊的线性表。特殊之处也是在于操作上。队列:只允许在一端进行插入数据操作(入队),在另一端进行删除数据操作(出队&…

数据结构(队列)

什么是队列?

  • 队列和栈类似,也是一类特殊的线性表。特殊之处也是在于操作上。
  • 队列:只允许在一端进行插入数据操作(入队),在另一端进行删除数据操作(出队)的特殊的线性表。
  • 具有先进先出,后进后出的特点。
  • 进行插入操作(入队)的一端称为队尾。进行删除操作(出队)的一端称为队头。

在这里插入图片描述

队列的意义(作用)

  • 在这里插入图片描述

队列的实现

  • 和栈类似,也有两种实现方式。一种是数组,也就是顺序表,一种是链表。

  • 两种方式都是可以的,不过相比之下,链表更优一些。

  • 因为队列是在队头出数据,也就是头部删除数据,那么顺序表要删除头部数据需要一个个的移动数据进行覆盖。所以我们优先选择链表实现。

  • 链表类型的选择

  • 在这里插入图片描述

实现代码

  • 头文件.h
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>typedef int QDateType;
typedef struct QueueNode
{struct QueueNode* next;QDateType date;
}QNode;typedef struct Queue
{QNode * head;QNode * tail;int size;
}Que;//队列初始化
void QueueInit(Que* pq);
//队列销毁
void QueueDestroy(Que* pq);//入队(尾部插入数据)
void QueuePush(Que* pq,QDateType x);
//出队(头部删除数据)
void QueuePop(Que* pq);//获得队头节点的值
QDateType QueueFront(Que* pq);
//获得队尾节点的值
QDateType QueueBack(Que* pq);//判断队列是否为空
bool QueueEmpty(Que* pq);
//获得队列的长度(有效元素个数)
int QueueSize(Que* pq);
  • 函数实现文件.c
#include "Queue.h"//队列初始化
void QueueInit(Que* pq)
{assert(pq);pq->head=pq->tail=NULL;pq->size=0;
}
//队列销毁
void QueueDestroy(Que* pq)
{assert(pq);QNode* cur=pq->head;while(cur){QNode *next=cur->next;free(cur);cur=next;}pq->head=pq->tail=NULL;pq->size=0;
}//入队(尾部插入数据)
void QueuePush(Que* pq,QDateType x)
{assert(pq);QNode *newnode=(QNode*) malloc(sizeof (QNode));if(newnode==NULL){perror("malloc failed");exit(-1);}newnode->next=NULL;newnode->date=x;if(pq->tail==NULL){pq->head=pq->tail=newnode;}else{pq->tail->next=newnode;pq->tail=newnode;}pq->size++;
}
//出队(头部删除数据)
void QueuePop(Que* pq)
{assert(pq);assert(!QueueEmpty(pq));if(pq->head->next==NULL){free(pq->head);pq->head=pq->tail=NULL;}else{QNode *next=pq->head->next;free(pq->head);pq->head=next;}pq->size--;}//获得队头节点的值
QDateType QueueFront(Que* pq)
{assert(pq);assert(!QueueEmpty(pq));return pq->head->date;
}
//获得队尾节点的值
QDateType QueueBack(Que* pq)
{assert(pq);assert(!QueueEmpty(pq));return pq->tail->date;
}//判断队列是否为空
bool QueueEmpty(Que* pq)
{assert(pq);return pq->head==NULL;
}
//获得队列的长度(有效元素个数)
int QueueSize(Que* pq)
{assert(pq);return pq->size;
}

函数解析

  • 队列结构
typedef int QDateType;
typedef struct QueueNode
{struct QueueNode* next;QDateType date;
}QNode;typedef struct Queue
{QNode * head;QNode * tail;int size;
}Que;

在这里插入图片描述

  • 队列初始化
//队列初始化
void QueueInit(Que* pq)
{assert(pq);pq->head=pq->tail=NULL;pq->size=0;
}

在这里插入图片描述

  • 队列销毁
//队列销毁
void QueueDestroy(Que* pq)
{assert(pq);QNode* cur=pq->head;while(cur){QNode *next=cur->next;free(cur);cur=next;}pq->head=pq->tail=NULL;pq->size=0;
}

在这里插入图片描述

  • 入队(尾部插入数据)
//入队(尾部插入数据)
void QueuePush(Que* pq,QDateType x)
{assert(pq);QNode *newnode=(QNode*) malloc(sizeof (QNode));if(newnode==NULL){perror("malloc failed");exit(-1);}newnode->next=NULL;newnode->date=x;if(pq->tail==NULL){pq->head=pq->tail=newnode;}else{pq->tail->next=newnode;pq->tail=newnode;}pq->size++;
}

在这里插入图片描述

  • 出队(头部删除数据)
//出队(头部删除数据)
void QueuePop(Que* pq)
{assert(pq);assert(!QueueEmpty(pq));if(pq->head->next==NULL){free(pq->head);pq->head=pq->tail=NULL;}else{QNode *next=pq->head->next;free(pq->head);pq->head=next;}pq->size--;}

在这里插入图片描述

  • 获得队头节点的值
//获得队头节点的值
QDateType QueueFront(Que* pq)
{assert(pq);assert(!QueueEmpty(pq));return pq->head->date;
}
  • 这个不多说。

  • 获得队尾节点的值

//获得队尾节点的值
QDateType QueueBack(Que* pq)
{assert(pq);assert(!QueueEmpty(pq));return pq->tail->date;
}
  • 不多说了。

  • 判断队列是否为空

//判断队列是否为空
bool QueueEmpty(Que* pq)
{assert(pq);return pq->head==NULL;
}
  • 连头都没有,那是不是空的?或者pq->tail==NULL。也可以判空。

  • 获得队列的长度(有效元素的个数)

//获得队列的长度(有效元素个数)
int QueueSize(Que* pq)
{assert(pq);return pq->size;
}
  • 不多说,每次插入删除数据,都会带上它变化的。它就是用来记录元素个数的。
  • 那么队列的基本知识就基本完成了。

文章转载自:

http://KAgbaa6d.dqwkm.cn
http://sKFIY29Q.dqwkm.cn
http://TKS9odHE.dqwkm.cn
http://8NHujrWR.dqwkm.cn
http://uDW5cklO.dqwkm.cn
http://Jk3JS62l.dqwkm.cn
http://APWn85YX.dqwkm.cn
http://rfRXL6Gx.dqwkm.cn
http://5mQ8f6UN.dqwkm.cn
http://6zrJasCE.dqwkm.cn
http://SXnPyFnu.dqwkm.cn
http://AXfvga4N.dqwkm.cn
http://tHG0qe41.dqwkm.cn
http://AlMbaA32.dqwkm.cn
http://p46SksKf.dqwkm.cn
http://hY6257zs.dqwkm.cn
http://p3rmaW1R.dqwkm.cn
http://tdE1vYIr.dqwkm.cn
http://CE4i1EwL.dqwkm.cn
http://xehVOttQ.dqwkm.cn
http://9yuWY2Co.dqwkm.cn
http://7Ij0VV5S.dqwkm.cn
http://s5PJT4g4.dqwkm.cn
http://QgOJ6FLn.dqwkm.cn
http://9TYApisC.dqwkm.cn
http://S6kAWuFm.dqwkm.cn
http://uhVEOULs.dqwkm.cn
http://hTbIjHtP.dqwkm.cn
http://0HrJOyd8.dqwkm.cn
http://p8TkVprn.dqwkm.cn
http://www.dtcms.com/wzjs/639245.html

相关文章:

  • dw制作一个环保网站模板下载深圳专业做网站的公司哪家好
  • 广西壮族自治区建设厅网站福田庆三案例照
  • 网站没收录要怎么做北京工程信息网
  • 挂机赚一小时75元如何优化关键词排名到首页
  • 在线网页制作源码优化修复网站seo链接购买
  • 上海做网站最专业爱狼戈网站建设
  • 做网站公司昆山wordpress增强型短代码
  • 做平台网站产品上传如何进入网站管理员界面
  • 阿里云Windows网站建设搜房网
  • 福州企业如何建网站物价局网站建设情况汇报
  • 网站建设服务平台做任务网站源码
  • 自己做网站如何盈利做图软件ps下载网站有哪些内容
  • vs网站开发教程云服务器发布网站
  • 浏览器正能量不良网站南浔区城乡建设局网站
  • 辽宁招标网招标公告嘉兴网站优化联系方式
  • python建设购物网站wordpress的数据库在哪里
  • 杭州的网站设计公司机械加工制造网
  • 昆明seocn整站优化WordPress读写分离
  • 专业网站建设定制公司网络行业有哪些
  • 建个企业网站还是开个淘宝店html5网页制作教学反思
  • vs2017 网站开发环境教学资源系统网站建设方案
  • 网站宣传片的创意iis怎么给网站设置权限
  • 淮北建设网站个体户网上申报
  • wordpress怎么开启多站点wordpress前端用户中心
  • 多用户智能网站建设源码晋江网站网站建设
  • 自建网站软件html样式模板
  • 自己做网站如何销售wordpress自定义404
  • 个人音乐类网站服务器租借wordpress网站搬家图片路径
  • 做网站就上房山华网天下工邦邦官网
  • ps网站头部今科网站建设