尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
力扣T232:用栈来实现队列
题目 描述思路分析栈是先入后出队列是先入先出故需要用两个栈去实现队列step1将1234随便入 栈中step2出队时先出去的是1按顺序将非空栈的元素入栈到空栈再在stack2中出栈如果再次执行出队操作就让stack2再出栈step3再入队5不可以直接再次入队到stack2中不然5就会变为队头所以入队在stack1中若要取队头元素取stack2即可综上所述只要入队都在stack1中出队都在stack2中故可定义一个栈stackpush用于入队stackpop用于出队代码实现拿过来实现栈的函数void StackInit(ST* ps, SLDataType x) { ps-arr NULL; ps-top ps-capacity 0; } void StackPush(ST* ps, SLDataType x) { assert(ps); if (ps-top ps-capacity) { int newcapacity ps-capacity 0 ? 4 : 2 * ps-capacity; SLDataType* tmp (SLDataType*)realloc(ps-arr, newcapacity * sizeof(SLDataType)); if (tmp NULL) { perror(realloc fail!); exit(1); } ps-arr tmp; ps-capacity newcapacity; }//判断当前的栈是否满容量或者无容量 ps-arr[ps-top] x; } bool STEmpty(ST* ps) { assert(ps); return ps-top 0; } //如果为空那么返回ture //如果不为空那么返回false void StackPop(ST* ps) { assert(!STEmpty(ps)); --ps-top; } SLDataType StackTop(ST* ps) { assert(!STEmpty(ps)); return ps-arr[ps-top - 1]; } void StackDestroy(ST* ps) { if (ps-arr) { free(ps-arr); ps-arr NULL; } ps-top ps-capacity 0; }1.定义结构体typedef int SLDataType; typedef struct Stack { SLDataType* arr; int top; int capacity; }ST; typedef struct MyQueue { ST stackpush; ST stackpop; }MyQueue;2.初始化创建一个结构体把该结构体指针返回用malloc创建一个MyQueue大小的内存空间而后用两个栈直接调用初始化函数MyQueue* myqueueCreat() { MyQueue* pst (MyQueue*)malloc(sizeof(MyQueue)); if (pst NULL) { perror(fail); exit(-1); } StackInit(pst-stackpush,0); StackInit(pst-stackpop, 0); return pst; }3.入队直接入在stackpushvoid myQueuePush(MyQueue* obj, SLDataType x) { StackPush(obj-stackpush, x); }4.出队先要判断stackpop是否为空栈如果为空栈则需要将stackpush中的元素全部挪到stackpush中再进行出队SLDataType myQueuePop(MyQueue* obj) { if (STEmpty(obj-stackpop) ){ while (StackSize(obj-stackpush) 0) { StackPush(obj-stackpop, StackTop(obj-stackpush)); StackPop(obj-stackpush); } }先取出stackpush栈顶元素入在stackpop中删除stackpush的栈顶元素直到stackpush的有效元素变为0挪移元素的过程结束出队操作用top接收stackpop的栈顶元素因为要返回删除值之后直接出栈即可SLDataType top StackTop(obj-stackpop); StackPop(obj-stackpop); return top;完整代码实现SLDataType myQueuePop(MyQueue* obj) { if (STEmpty(obj-stackpop) ){ while (StackSize(obj-stackpush) 0) { StackPush(obj-stackpop, StackTop(obj-stackpush)); StackPop(obj-stackpush); } } SLDataType top StackTop(obj-stackpop); StackPop(obj-stackpop); return top; }5.取队头元素把stackpop的栈顶元素返回即可若stackpop为空栈仍要挪移元素SLDataType myQueuePeek(MyQueue* obj) { if (STEmpty(obj-stackpop)) { while (StackSize(obj-stackpop)0) { StackPush(obj-stackpop, StackTop(obj-stackpush)); StackPop(obj-stackpop); } } return StackTop(obj-stackpop); }6.判空两个栈都为空即为空队bool myQueueEmpty(MyQueue* obj) { return STEmpty(obj-stackpush) STEmpty(obj-stackpop); }7.销毁将两个栈都销毁而后释放指针obj指向的空间再置为NULL即可void myQueueFree(MyQueue* obj) { StackDestroy(obj-stackpush); StackDestroy(obj-stackpop); free(obj); obj NULL; }
RELATED

相关推荐

AI什么都能教,为什么家庭教育反而更重要了?

AI什么都能教,为什么家庭教育反而更重要了?

在学校门口,一位妈妈对老师说:“老师,孩子就交给你了”这句话,我们说了几十年,说得那么自然——好像教育,天然就是学校的事。 但AI时代,这个假设正在松动。孩子回家问AI,十秒钟讲得比…

📅 2026/9/29 11:14:51
杆状病毒-昆虫细胞表达系统:重组蛋白生产的黄金平台

杆状病毒-昆虫细胞表达系统:重组蛋白生产的黄金平台

杆状病毒-昆虫细胞表达系统(Baculovirus–Insect Cell Expression System,简称 BEVS)是一种成熟的真核重组蛋白表达平台。自20世纪80年代 Smith 等人首次将外源基因导入杆状病毒并实现高水平表达以来,该系统逐渐发展成为生物制药和…

📅 2026/9/29 11:14:51
EtherCAT与FSoE硬核解析:确定性通信与功能安全实现原理

EtherCAT与FSoE硬核解析:确定性通信与功能安全实现原理

1. 这不是普通工业以太网——EtherCAT与FSoE到底在解决什么问题?你手头正调试一台汇川H5U控制器,接了24个660伺服轴,通信一跑就报错:..\ethercat\objdef.c(890): warning: #767-d: conversion from pointer to small。你查遍论坛&…

📅 2026/9/29 11:14:51
MORE NEWS

更多资讯

📰

GEO底层机制拆解:AI搜索如何决定企业内容的可见度

一、企业搜索结果可见度的四个常见问题传统搜索引擎优化围绕网页排名展开,企业竞争的是链接位置。但当用户转向豆包、文心一言、DeepSeek等对话大模型提问时,游戏规则变了。第一个问题是:企业内容不被AI引用,即便官网排名靠前&…

📰

3天从85%降到20%!这3个降AIGC工具让我导师直夸原创

还记得上周三凌晨两点,当我第三次收到知网AIGC检测报告时,手心都在冒汗——85%的AI相似度,40%的查重率,这意味着我的毕业论文根本达不到盲审要求。导师直接在我的初稿上批注“学术合规性存疑,建议重写”。距离最终答辩…

📰

红蓝对抗全流程指南:从攻击路径到检测盲区,构建安全运营闭环

简介:《红蓝对抗演练指南:企业攻防实战全流程拆解》是一份面向信息安全从业者、企业安全运维人员及攻防演练组织者的实战型 PDF 文档,针对红队攻击与蓝队防御全流程展开系统讲解。文档共 9 章,涵盖红蓝对抗概述、企业安全现状与必…

📰

AI搜索信任危机:企业内容如何跨越大模型的权威门槛

一、AI搜索与传统搜索的四个常见问题当用户向豆包或DeepSeek提问“苏州有哪些靠谱的短视频运营系统服务商”时,大模型给出的答案往往只引用三五个信源。企业内容若未被纳入这些信源池,即便官网做得再精致,也可能在AI问答中彻底隐身。这引出四…

📰

生成式搜索重构内容生态:企业线上可见度的趋势与落地

一、生成式搜索对企业线上可见的四个常见问题当用户习惯从“搜网页”转向“问AI要答案”,企业线上可见度的底层逻辑正在被重写。传统网页排名靠关键词密度和外链数量,而生成式引擎先理解意图、再筛选信源、后生成答案,企业内容若不被大模型收…

📰

Tarjan算法

我们先来了解一下Tarjan算法的作用 Tarjan算法解决的是:在有向图里找连通分量的问题 连通分量,听起来很高大上对吧,但是实际上他就是一堆点,它们两两之间可以互相到达 像这样: 1 -> 2 -> 3 -> 4 ^ | | …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬