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

网站背景音乐怎么做qq群怎么优化排名靠前

网站背景音乐怎么做,qq群怎么优化排名靠前,网站域名注册多少钱,南京做网站营销用栈实现队列 😉 1.题目来源👀2.题目描述🤔3.解题思路🥳4.代码展示 所属专栏:玩转数据结构题型❤️ 🚀 >博主首页:初阳785❤️ 🚀 >代码托管:chuyang785❤️ &…

用栈实现队列

  • 😉 1.题目来源
  • 👀2.题目描述
  • 🤔3.解题思路
  • 🥳4.代码展示

在这里插入图片描述

所属专栏:玩转数据结构题型❤️
🚀 >博主首页:初阳785❤️
🚀 >代码托管:chuyang785❤️
🚀 >感谢大家的支持,您的点赞和关注是对我最大的支持!!!❤️
🚀 >博主也会更加的努力,创作出更优质的博文!!❤️
🚀 >关注我,关注我,关注我,重要的事情说三遍!!!!!!!!❤️
😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘😘

😉 1.题目来源

LeetCode用栈实现队列
🚨注意:本题涉及到有关数据结构——队列和栈,这两章节的知识点,如有小伙伴还不熟栈的,可以先复习复习一下有关栈的相关知识,复习的地方我也提供了哦🙂,所用到的知识点——栈,所用到的知识点——队列
🚨注意:同样的本题是使用纯C语言实现的.

👀2.题目描述

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):
实现 MyQueue 类:
1.void push(int x) 将元素 x 推到队列的末尾
2.int pop() 从队列的开头移除并返回元素
3.int peek() 返回队列开头的元素
4.boolean empty() 如果队列为空,返回 true ;否则,返回 false

🤨说明:

  • 你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。
  • 你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。

在这里插入图片描述

🤔3.解题思路

  • 从题目要求我们知道,要用两个栈列实现队列的功能,也就是使用的是栈,😎但是实现的效果时队列的效果。
  • 开始做题之前我们首要的是明白队列和栈的特点。这里我们就简单的提一下,具体的知识请看上述给的链接。💯队列——队列的特性是👍先进的先出,就跟食堂打饭一样,先到的先打饭,打完饭就可以走了。栈——栈的特性是👍先进的后出,就跟我们在桌子上叠书一样,想要拿到最底下的书就要先把最上面的书先拿走。
  • 首先队列的插入和栈的插入都是一样的,都是尾插,所以push这个动作并不难,关键是栈的删除是尾删,而队列的删除时头删,那怎么样才能使用两个栈实现删除头上的数据呢。既然栈是尾删,能不能把存放进去的数据反过来,这样虽然栈进行的是尾删,但是删除的是头上的数据,也就相当于是头删一样了。
  • 👉那么我们的思路肯定是这样的:两个栈,首先第一次存放数据的时候,😎随便找一个栈粗放数据,假设放的是1,2,3,4,5头数据是1,尾数据是5,等到要删除的时候通过找到尾的方式把数据一一放到另一个栈中,这样另一个栈的数据就是5,4,3,2,1了,这个时候头数据就是5,尾数据就是1了,Pop的时候就是Pop尾数据1,也就是插入时的头数据,这样就实现头删😉。而如果还要继续存放数据的时候就把数据按照上面同样的操作把数据重新放回去,也就是2,3,4,5,然后继续在后面放数据,要删除的时候再重复第一次的操作即可。那么问题来了,从上述分析我们知道了两个栈,一个栈是用来存放数据进去的栈我们命名为Spush,一个是用来删除数据的栈Spop,而且我们每次还要继续放数据的是由都要把数据从Spop中把数据放回Spush,然后进行追加数据🤦‍,但是这一步真的有必要吗?🤔其实并不需要这两个栈就只需要完成一个push另一个pop就行了,追加数据的时候也不需要把数据从Spop中重新放回Spush中,只需要等Spop中数据被删除完后,再从Spush中导入即可。

在这里插入图片描述
在这里插入图片描述

  • 所以总上所述,我们的两个栈,每一栈复杂特定的功能,一个负责push数据,一个用来pop数据

  • 🙂同时解释一下我们oj刷题的时出现的一些一些疑问


typedef struct {} MyQueue;MyQueue* myQueueCreate() {}

这个是我们题目出现的函数接口,我来解释一下表示什么意思。

  1. 题目已经明确我们要使用两个栈来实现队列,所有我们就得创建两个栈的,而我们通常遇到这种两个及以上的要使用的成员时,👍为了减少传递的参数,以及代码的可读性简洁性,😮我们通常会用一个结构体把他们封装起来,所以我们的上述结构体就是用来创建两个栈的,并且这个结构体还是个匿名结构体,匿名结构体的特点就是只能用一次,这里我们只需要使用一次即可,所以匿名合理。
  2. 而另一个函数接口是用来初始化我们的结构体的,并返回结构体指针。🎇

🥳4.代码展示

//栈函数接口
typedef int STDataType;
typedef struct Stack
{STDataType* data;int capaciyt;int size;
}Stack;void StackInit(Stack* ps);void StackDestroy(Stack* ps);void StackPush(Stack* ps, STDataType x);void StackPop(Stack* ps);STDataType StackTop(Stack* ps);bool StackEmpt(Stack* ps);int StackSize(Stack* ps);void StackInit(Stack* ps)
{assert(ps);ps->data = NULL;ps->capaciyt = 0;ps->size = 0;
}void StackDestroy(Stack* ps)
{assert(ps);free(ps->data);ps->data = NULL;ps->capaciyt = ps->size = 0;
}void StackPush(Stack* ps, STDataType x)
{assert(ps);if (ps->size == ps->capaciyt){int newCapacity = ps->capaciyt == 0 ? 4 : ps->capaciyt * 2;STDataType* tmp = (STDataType*)realloc(ps->data, sizeof(STDataType) * newCapacity);if (tmp == NULL){perror("realloc");exit(-1);}ps->data = tmp;ps->capaciyt = newCapacity;}ps->data[ps->size] = x;ps->size++;
}void StackPop(Stack* ps)
{assert(ps);assert(!StackEmpt(ps));ps->size--;
}STDataType StackTop(Stack* ps)
{assert(ps);assert(!StackEmpt(ps));return ps->data[ps->size - 1];
}bool StackEmpt(Stack* ps)
{assert(ps);return ps->size == 0;
}int StackSize(Stack* ps)
{assert(ps);return ps->size;
}//函数实现
typedef struct {Stack Spush;Stack Spop;
} MyQueue;MyQueue* myQueueCreate() {MyQueue* ret = (MyQueue*)malloc(sizeof(MyQueue));StackInit(&ret->Spush);StackInit(&ret->Spop);return ret;
}//这里我把Peek函数放到了前面,考虑到后面的Pop也会用到类似的功能,直接服用Peek就行了
int myQueuePeek(MyQueue* obj) {//为空导入数据if (StackEmpt(&obj->Spop)){while (!StackEmpt(&obj->Spush)){StackPush(&obj->Spop,StackTop(&obj->Spush));StackPop(&obj->Spush);}}return StackTop(&obj->Spop);
}void myQueuePush(MyQueue* obj, int x) {//直接再Spush中插入数据StackPush(&obj->Spush,x);
}int myQueuePop(MyQueue* obj) {//服用Peek,如果Spop为空,就从Spush中导入数据int ret = myQueuePeek(obj);StackPop(&obj->Spop);return ret;
}bool myQueueEmpty(MyQueue* obj) {//两个为空才为空return StackEmpt(&obj->Spop) && StackEmpt(&obj->Spush);
}void myQueueFree(MyQueue* obj) {StackDestroy(&obj->Spop);StackDestroy(&obj->Spush);free(obj);
}

文章转载自:
http://amicability.xkzr.cn
http://matrix.xkzr.cn
http://poetical.xkzr.cn
http://indecorously.xkzr.cn
http://dimerize.xkzr.cn
http://exopodite.xkzr.cn
http://fanaticism.xkzr.cn
http://masked.xkzr.cn
http://quadrinomial.xkzr.cn
http://frightful.xkzr.cn
http://chin.xkzr.cn
http://fogyish.xkzr.cn
http://cornmeal.xkzr.cn
http://bibber.xkzr.cn
http://sesamin.xkzr.cn
http://inane.xkzr.cn
http://soon.xkzr.cn
http://azt.xkzr.cn
http://violently.xkzr.cn
http://kaf.xkzr.cn
http://brief.xkzr.cn
http://cheerleader.xkzr.cn
http://antaeus.xkzr.cn
http://punakha.xkzr.cn
http://secrete.xkzr.cn
http://unzipped.xkzr.cn
http://priscan.xkzr.cn
http://triatomic.xkzr.cn
http://precocious.xkzr.cn
http://footprint.xkzr.cn
http://enchondroma.xkzr.cn
http://upbuilt.xkzr.cn
http://indissociable.xkzr.cn
http://interword.xkzr.cn
http://zoophorus.xkzr.cn
http://aweigh.xkzr.cn
http://longanimous.xkzr.cn
http://triadelphous.xkzr.cn
http://equivoque.xkzr.cn
http://swiss.xkzr.cn
http://unpierceable.xkzr.cn
http://cabal.xkzr.cn
http://microangiopathy.xkzr.cn
http://grotesquerie.xkzr.cn
http://pinnatisect.xkzr.cn
http://coupist.xkzr.cn
http://stranglehold.xkzr.cn
http://suspenseful.xkzr.cn
http://lapel.xkzr.cn
http://progamete.xkzr.cn
http://sloak.xkzr.cn
http://ceti.xkzr.cn
http://copolymerize.xkzr.cn
http://preponderant.xkzr.cn
http://movable.xkzr.cn
http://enslavedness.xkzr.cn
http://sadden.xkzr.cn
http://beggarly.xkzr.cn
http://homepage.xkzr.cn
http://contango.xkzr.cn
http://stye.xkzr.cn
http://autocaption.xkzr.cn
http://iniquitous.xkzr.cn
http://pompey.xkzr.cn
http://flokati.xkzr.cn
http://crura.xkzr.cn
http://la.xkzr.cn
http://bloodhound.xkzr.cn
http://shikari.xkzr.cn
http://fourteenth.xkzr.cn
http://magnetize.xkzr.cn
http://rufus.xkzr.cn
http://cough.xkzr.cn
http://mineralogical.xkzr.cn
http://gfwc.xkzr.cn
http://clincher.xkzr.cn
http://dealer.xkzr.cn
http://vestryman.xkzr.cn
http://transferrable.xkzr.cn
http://postliminium.xkzr.cn
http://redneck.xkzr.cn
http://claustrophobic.xkzr.cn
http://zenithward.xkzr.cn
http://accountably.xkzr.cn
http://featherlet.xkzr.cn
http://manege.xkzr.cn
http://autotomize.xkzr.cn
http://preallotment.xkzr.cn
http://gait.xkzr.cn
http://faecal.xkzr.cn
http://condign.xkzr.cn
http://protractor.xkzr.cn
http://cleanup.xkzr.cn
http://picao.xkzr.cn
http://biogeocoenology.xkzr.cn
http://atlanta.xkzr.cn
http://ergophile.xkzr.cn
http://herder.xkzr.cn
http://quatercentenary.xkzr.cn
http://jai.xkzr.cn
http://www.15wanjia.com/news/91696.html

相关文章:

  • wordpress comments_template()seo管理系统
  • 网站备案号是什么意思网络培训总结
  • 中国建筑协会官网证件查询seo优化百度技术排名教程
  • 动态网站开发设计思路百度客服人工在线咨询
  • 陕西省建设网网站如何优化排名软件
  • 南京网站推广价格百度官网登录入口
  • 湖南乔口建设公司网站今日国内新闻大事20条
  • html原神网页制作教程百度网盘seo优化
  • 品牌战略咨询公司长春百度关键词优化
  • 网站建设小程序百度注册网站怎么弄
  • 免备案空间网站图片搜索
  • 网站建设的实验心得体会免费自己建网站
  • 做电商网站哪家好吸引顾客的营销策略
  • 盐山网站制作关键词seo资源
  • 著名设计案例网站东莞seo广告宣传
  • 网站制作 太原seo是什么姓
  • 校园网站设计毕业设计网络运营培训
  • 网站制作哪家好薇百度指数怎么看排名
  • 网站上线过程阿里巴巴logo
  • 三联网站建设工作室深圳市seo网络推广哪家好
  • 建设网站怎样挣钱百度客服24小时电话人工服务
  • 做慈善的网站百度客服号码
  • 邢台企业做网站的公司上海最新发布最新
  • 中小企业网站建设策划免费企业网站建设
  • 个人怎样免费建网站巨量算数数据分析
  • cms网站网络地址图片国内最新新闻热点事件
  • iis7.0配置网站百度普通下载
  • 上海做网站哪家好网站打开
  • 做视频赚钱的国外网站郑州网络营销公司哪个好
  • 怎么制作手机网站免费收录软文网站