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

pyton怎么做网站的代码汕头网站建设

pyton怎么做网站的代码,汕头网站建设,wordpress 主题排名,wordpress wp-o-matic文章目录 有关队列的概念队列的结点设计及初始化队列的销毁判空和计数入队操作出队操作 有关队列的概念 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)入队列:进行插入操作的一端…

文章目录

  • 有关队列的概念
  • 队列的结点设计及初始化
  • 队列的销毁判空和计数
  • 入队操作
  • 出队操作


有关队列的概念

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

联想一下链表,在单链表中,只能对表尾进行插入,对表头进行结点的删除,这样强限制性的链表,就是所说的队列。也就是说,队列是限定在表的一端进行插入,表的另一端进行删除的数据结构。

在这里插入图片描述

如图去买票排队,每一列队伍都有一个队尾和队首,先来的先买票,后来的后买,买好的就从队首出去,新来买票的就需要从队尾继续排队。

1.结构

队列由两部分组成——队头(front)和队尾(rear)。队头是队列中允许删除元素的一端,而队尾是允许添加元素的一端。

队列是一个线性的数据结构,并且这个数据结构只允许在一端进行插入,另一端进行删除,禁止直接访问除这两端以外的一切数据,且队列是一个先进先出的数据结构。
就比如下图

在这里插入图片描述

队列存储结构的实现有以下两种方式:
①顺序队列:在顺序表的基础上实现的队列结构。
②链队列:在链表的基础上实现的队列结构。

两者的区别仅是顺序表和链表的区别,即在实际的物理空间中,数据集中存储的队列是顺序队列,分散存储的队列是链队列。

队列的结点设计及初始化

队列只有链式的设计方法,其本身分为多种队列,如顺序队列和循环队列,还有衍生的优先队列等等,以顺序队列的设计为例。

结点设计
首先是队列的结点设计,可以设计出两个结构体,一个结构体 Node 表示结点,其中包含有 data 域和 next 指针,如图:
在这里插入图片描述

其中 data 表示数据,其可以是简单的类型,也可以是复杂的结构体。next 指针表示,下一个的指针,其指向下一个结点,通过 next 指针将各个结点链接。

结构体设计
然后再添加一个结构体,其包括了两个分别永远指向队列的队尾和队首的指针,看到这里是不是觉得和栈很像?

主要的操作只对这两个指针进行操作。为使后续操作更加方便,我们不妨再多设置一个用来计数的成员,如图所示:

在这里插入图片描述

其结构体设计的代码可以表示为:

typedef int QDataType;
typedef struct QueueNode
{struct QueueNode* next;QDataType val;
}QNode;typedef struct Queue
{QNode* phead;QNode* ptail;int size;
}Queue;

队列的销毁判空和计数

这块区域较简单,仅销毁区域需要注意将每个节点依次释放,避免内存泄漏

这部分代码可以表示为

//销毁
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;
}
int QueueSize(Queue* pq)
{assert(pq);return pq->size;
}
bool QueueEmpty(Queue* pq)
{assert(pq);return pq->size == 0;
}

入队操作

在这里插入图片描述
进行入队操作的时候,同样的,首先需要判断队列是否为空,如果队列为空的话,需要将头指针和尾指针一同指向第一个结点,代码如下:

void QueuePush(Queue* pq, QDataType x)
{assert(pq);QNode* newnode = (QNode*)malloc(sizeof(QNode));if (newnode == NULL){perror("malloc newnode fail");}newnode->val = x;newnode->next = NULL;if (pq->ptail == NULL){pq->phead = newnode;pq->ptail = newnode;}else{pq->ptail->next = newnode;pq->ptail = newnode;}pq->size++;	
}

出队操作

在这里插入图片描述
出队(pop)操作,是指在队列不为空的情况下进行的一个判断,当然在此也一定要进行队列判空的操。

如图,如果队列只有一个元素了,也就是说头尾指针均指向了同一个结点,那么直接将头尾两指针置空,并释放这一个结点即可,代码如下:

// 队头删除
void QueuePop(Queue* pq)
{assert(pq);assert(pq->size != 0);if (pq->size == 1){free(pq->phead);pq->phead = pq->ptail = NULL;}else{QNode* next = pq->phead->next;free(pq->phead);pq->phead = next;}pq->size--;
}
http://www.ds6.com.cn/news/17976.html

相关文章:

  • 学校学网页设计需要自带电脑吗优化大师的三大功能
  • 怎么做宣传网站百度搜索风云榜游戏
  • mac怎么做网站设计北京建设网站公司
  • 长沙市制作企业网站公司谷歌paypal官网入口
  • windows网站建设教程优化20条措施
  • 电子商务网站建设项目书百度快照投诉中心
  • 做网站支持提现支付宝郴州网站定制
  • zblog做单页网站北京seo优化哪家好
  • 企业的网站特点小程序开发模板
  • 实业+东莞网站建设seo工资服务
  • 晋中公司做网站亚马逊查关键词排名工具
  • 怎么制作视频教程关键词整站优化公司
  • 南阳做网站公司哪家好网站推广优化价格
  • 上海app制作公司百度优化公司
  • 做视频网站教程百度客服电话是多少
  • 汽车网站建设公司哪家好百度seo查询
  • 哪些网站做的美seo助手
  • 做seo网站标题重要吗视频号直播推广二维码
  • 怎么查询网站所有关键词百度问答一天能赚100块吗
  • 网站模板 黑白制作一个网页的步骤
  • dreamwearver怎么做静态网站google推广平台怎么做
  • 2021年中央农村工作会议seo招聘
  • 礼品网站商城怎么做搜索引擎大全排行
  • 网站开发流程到上线百度软件商店
  • 厦门网站开发公司吉林网站seo
  • b站有没有推广2020最近的新闻大事10条
  • 网站首页的图标是怎么做的关键词优化的策略有哪些
  • 网站上做的图片不清晰是怎么回事品牌如何做推广
  • wow电影在线观看网站标题算关键词优化吗
  • 怎么样增加网站权重网络营销方案设计