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

文章类网站选什么内容如何免费推广自己的网站

文章类网站选什么内容,如何免费推广自己的网站,替人做赌彩网站,文安做网站的目录 一、前言 1.如何实现循环? 2.如何判断队列为空? 3.如何判断队列为满? 二、循环队列的结构定义 三、循环队列的创建及其初始化 四、入队 五、出队 六、取队头元素 七、取队尾元素 八、循环队列判空 九、循环队列判满 十、循环…

目录

一、前言

1.如何实现循环?

2.如何判断队列为空?

3.如何判断队列为满?

二、循环队列的结构定义

三、循环队列的创建及其初始化

四、入队

五、出队

六、取队头元素

七、取队尾元素

八、循环队列判空

九、循环队列判满

十、循环队列销毁


一、前言

利用数组实现循环队列,重点要解决的问题有三个:

1.如何实现循环?

由于数组大小k是确定的,要实现队列循环就需要让数组下标循环,利用两个下标front、back分别指向首元素和尾元素的下一个位置。front = (front+1) % k,back = (back+1) % k,即可完成下标的循环。

2.如何判断队列为空?

初始化时,front和back都为0,此时为空。因此我们确定判空条件为 front = back时循环队列为空。

3.如何判断队列为满?

我们发现,当队列满时,由于back指向队尾元素的下一个,因此队列满时,front = back ,与队列空时相矛盾。如何解决呢?

两种解决方法:

一是:循环队列结构中新增队列大小 size ,当size=0且front = back时,队列为空;当size≠0且front = back时,队列为满。

二是:新增一个空间,不存储数据,front = (front+1) % (k+1),back = (back+1) % (k+1),当 (back+1) % (k+1) = front时,队列为满。

本文仅讲解方法一,方法二详解:数组实现循环队列(新增一个空间)-CSDN博客

二、循环队列的结构定义

循环队列的结构中包含数组、头指针、尾指针、队列容量、队列大小(队列大小用于区分队列空与满的情况)

//方法一
typedef int MCQDataType;
//循环队列结构定义
typedef struct {MCQDataType *a;int front;//头指针,指向队头元素int back;//尾指针,指向队尾元素的下一个位置int size;//队列大小int k;//队列容量
} MyCircularQueue;

三、循环队列的创建及其初始化

为循环队列动态申请一个内存空间,再将头指针、尾指针、队列大小都初始化为0,队列容量为k

//方法一
//循环队列创建及其初始化
MyCircularQueue* myCircularQueueCreate(int k) {MyCircularQueue* mcq=(MyCircularQueue*)malloc(sizeof(MyCircularQueue));mcq->a=(MCQDataType*)malloc(sizeof(MCQDataType)*(k));mcq->front=mcq->back=mcq->size=0;mcq->k=k;return mcq;
}

四、入队

先通过size判断队列是否满,不满再将数据入队,同时尾指针要  加1模k (back = (back+1) % k) 

//方法一
//入队
bool myCircularQueueEnQueue(MyCircularQueue* obj, int value) {if(obj->size==obj->k)//队列已满{return false;}obj->a[obj->back]=value;obj->back=(obj->back+1)%obj->k;obj->size++;return true;
}

五、出队

先通过size判断队列是否空,不空再将数据出队,同时头指针要  加1模k (front = (front+1) % k)

//方法一
//出队
bool myCircularQueueDeQueue(MyCircularQueue* obj) {if(obj->size==0)//队列为空{return false;}obj->front=(obj->front+1)%obj->k;obj->size--;return true;
}

六、取队头元素

先通过size判断队列是否为空,不空直接返回队头元素即可

//方法一
//取队头元素
int myCircularQueueFront(MyCircularQueue* obj) {if(obj->size==0)//队列为空{return -1;}return obj->a[obj->front];
}

七、取队尾元素

先通过size判断队尾是否为空。由于尾指针指向的是队尾元素的下一个位置,所以需要返回back-1位置的元素。由此需要判断尾指针是否指向0位置,如果指向0位置则不能back-1,否则越界,需要返回数组的最后一个位置元素,即k-1的位置;如果不指向0位置,则返回back-1位置的元素即可。

//方法一
//取队尾元素
int myCircularQueueRear(MyCircularQueue* obj) {if(obj->size==0){return -1;}if(obj->back==0){return obj->a[obj->k-1];}else{return obj->a[obj->back-1];}
}

八、循环队列判空

通过size判空即可

//方法一
//循环队列判空
bool myCircularQueueIsEmpty(MyCircularQueue* obj) {return obj->size==0;
}

九、循环队列判满

通过size判满即可

//方法一
//循环队列判满
bool myCircularQueueIsFull(MyCircularQueue* obj) {return obj->size==obj->k;
}

十、循环队列销毁

动态申请的内存空间需要动态销毁

//方法一
//循环队列销毁
void myCircularQueueFree(MyCircularQueue* obj) {free(obj->a);free(obj);
}
http://www.tj-hxxt.cn/news/28280.html

相关文章:

  • 山东省作风建设网站在百度做广告多少钱
  • 社区推广的营销推广方式优化技术基础
  • c#做的网站怎么上传图片公司网站建设价格
  • 做网站首页有什么关键词搜索数据
  • 网站建设先学什么seo排名优化培训
  • wordpress增加搜索框福州短视频seo网站
  • 做网站 嵌入支付sem是什么的缩写
  • 网站建设cach目录某网站搜索引擎优化
  • 毛片a做片在线观看网站有哪些企业培训平台
  • drupal 和wordpress深圳专业seo
  • 合肥网站设计品牌三只松鼠搜索引擎推广
  • 个人网站主页设计做网站的步骤
  • 营销网站制作比较好的百度外包公司有哪些
  • 昆明网站建设哪家比较好互联网销售
  • ps网站设计怎么做读书网站排名
  • 云主机怎么装网站it培训机构口碑排名
  • wordpress 动态网站模板下载地址北京营销公司排行榜
  • 电线电缆技术支持中山网站建设上海搜索引擎优化1
  • wordpress 主题 打包 appseo怎么去优化
  • java和PHP做网站哪个好6最吸引人的营销广告词
  • 常州做网站找哪家好seo入口
  • 公司网站建设费会计处理百度怎么打广告在首页
  • 西城做网站公司网址查询服务器地址
  • 网站建设是什么科目上海网站seo诊断
  • 湖南服装网站建设黄页推广
  • 服饰类行业_如果要建设网站_说明其建站流程.全能搜
  • 如何免费申请域名和网址深圳市企业网站seo营销工具
  • 清远网站建设推广seo关键词推广怎么做
  • 金山区做网站吗2024北京又开始核酸了吗今天
  • 杭州网站建设文章百度一下百度网站