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

怎么建个私人网站网络营销推广公司简介

怎么建个私人网站,网络营销推广公司简介,中国能源建设集团有限公司董事长,张家港建网站的公司文章目录前言一.什么是队列,队列的特点二、队列相关操作队列的相关操作声明队列的创建1.队列的初始化2.对队列进行销毁3.判断队列是否为空队列4.入队操作5.出队操作6.取出队头数据7. 取出队尾数据8.计算队伍的人数总结前言 本文章讲述的是数据结构的特殊线性表——…

文章目录

  • 前言
  • 一.什么是队列,队列的特点
  • 二、队列相关操作
    • 队列的相关操作声明
    • 队列的创建
    • 1.队列的初始化
    • 2.对队列进行销毁
    • 3.判断队列是否为空队列
    • 4.入队操作
    • 5.出队操作
    • 6.取出队头数据
    • 7. 取出队尾数据
    • 8.计算队伍的人数
  • 总结


前言

本文章讲述的是数据结构的特殊线性表——队列


一.什么是队列,队列的特点

队列是数据结构中的一种特殊的线性表,它与栈不同,

在这里插入图片描述
队列的基本图例如上图:
显然,队列的特点就是:
先进先出
First In First Out
那么我们使用什么样的方式来实现队列呢?

基于队列的特点,使用链表而不是数组来实现队列是比较合适的
使用数组来实现队列的缺点:

出队时需要挪动数据,效率不高。

使用链表来实现队列的优点:入队出队效率高,不需要挪动数据。
使用链表来进行入队出队时,就需要链接起来和释放节点,所以我们最好定义头指针和尾指针指向队头和队尾。

把头指针和尾指针放在一个结构体中,更方便操作,如下图:

在这里插入图片描述

二、队列相关操作

队列的相关操作声明

void QueueInit(Queue* pq);//初始化队列void QueueDestroy(Queue* pq);//销毁队列void QueuePush(Queue* pq,QDataType x);//插入数据void QueuePop(Queue* pq);//删除数据int QueueSize(Queue* pq);//记录队列有多少人bool QueueEmpty(Queue* pq);//判断队列是否为NULLQDataType QueueFront(Queue* pq);//取出队头数据QDataType QueueBack(Queue* pq);//取出队尾数据

队列的创建


#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>typedef int QDataType;
//队列更适合用链表写,因为如果用顺序表来写,出列的时候需要挪动数据typedef struct QueueNode
{QDataType data;struct QueueNode* next;
}QNode;
//队伍的每个人的结构体typedef struct Queue
{struct QueueNode* head;struct QueueNode* tail;
}Queue;
指向队头和队尾的两个指针放在一个结构体里面

1.队列的初始化

void QueueInit(Queue* pq)
{assert(pq);pq->head = pq->tail = NULL;
}

初始化指向队头和队尾的两个指针为NULL

2.对队列进行销毁

void QueueDestroy(Queue* pq)
{assert(pq);QNode* cur = pq->head;while (cur){QNode* next = cur->next;free(cur);cur = next;}pq->head = pq->tail = NULL;
}

3.判断队列是否为空队列

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

4.入队操作

解读:队列的实现方式是链表,不需要检查容量不足,每入队一个人就申请一个节点即可

void QueuePush(Queue* pq, QDataType x)
{assert(pq);QNode* newnode = (QNode*)malloc(sizeof(QNode));assert(newnode != NULL);newnode->data = x;newnode->next = NULL;if (pq->head == NULL){pq->head = pq->tail = newnode;}//第一次入队的时候,就作为队头,头指针指向它pq->tail->next = newnode;pq->tail = newnode;}

5.出队操作

//记住队列是先进先出,所以队头先出
void QueuePop(Queue* pq)
{assert(pq);assert(!QueueEmpty(pq));//队头为空,说明删完了QNode* newhead = pq->head->next;//先记录队头的下一个人//删到最后的时候,tail没有置空,是野指针,所以这里要判断if (newhead == NULL){pq->tail = NULL;}free(pq->head);pq->head = newhead;
}

6.取出队头数据

注意出队的时候,并没有拿出该人数的节点的值

QDataType QueueFront(Queue* pq)
{assert(pq);assert(!QueueEmpty(pq));return pq->head->data;
}

7. 取出队尾数据

QDataType QueueBack(Queue* pq)
{assert(pq);assert(!QueueEmpty(pq));return pq->tail->data;
}

8.计算队伍的人数

int QueueSize(Queue* pq)
{assert(pq);int size = 0;QNode* cur = pq->head;while (cur){++size;cur = cur->next;}return size;
}

总结

文章讲述简单队列的实现,复杂队列后续会讲。

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

相关文章:

  • 杭州自助建站软件wordpress安装条件
  • 做网站每一步的是什么网络服务禁用后如何启动
  • 建立个人网站流程深圳网站开发公司h5
  • 用php做网站难吗安卓app开发框架
  • 青岛网站建设青岛新思维建筑公司发展愿景
  • 班级网站主页设计模板福田网站建设费用明细
  • 北京网站建设解决方案深圳中装建设集团有限公司
  • 四川省建设厅官方网站三内人员重庆特种作业证件查询
  • 网站添加邮件发送怎么做视频剪辑线下培训班
  • 孝感网站的建设青岛城阳网站开发
  • 浙江台州网络设计网站辽宁省城乡建设厅网站
  • 做网站九州科技用什么工具做网站视图
  • 山东网站建设app雷州网站
  • 建网站没有公司地址怎么办营销型网站建设哪家便宜
  • 推广网站方案佛山网站设计联系方式
  • 如何利用网站开发客户合川网站建设
  • 怎么做网站动态框企业网站推广渠道有哪些
  • 官方网站建设制作平台汕头达濠
  • 怎么搞一个服务器建设网站网站建设初验申请表
  • 室内设计找工作网站彩票网站代理
  • 基于php网站建设设计南宁企业建站程序
  • 网站开发亿码酷流量网页设计与制作建立站点实践报告
  • 做网站自己能做百度推广吗在线设计的软件
  • 做企业网站需要招标公告上面的技术参数写什么网站伪静态规则
  • 云主机添加网站淄博手机网站建设公司
  • 什么是网站开发企业手机网站源码
  • 微信做商城网站网站支付功能建设
  • 荷塘网站建设网站开发7个基本流程
  • 如何在建设银行网站申购纪念币wordpress 增加相册
  • wordpress搜索功能优化做搜狗pc网站优化首