新闻详情

新闻详情

首页 / 资讯中心 / 详情

力扣T232:用栈来实现队列

发布时间:2026/9/29 11:14:26来源:尧图网络
力扣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

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

DeepSeek V4.1-Flash KV压缩与DSec沙箱实操指南 2026/9/29 17:30:55

DeepSeek V4.1-Flash KV压缩与DSec沙箱实操指南

1. 这不是论文解读,是实操工程师的现场拆解笔记 最近两周,我连续在三个客户现场部署 DeepSeek 模型服务,其中两个项目明确要求支持长上下文(128K)和低延迟推理,另一个则需要构建可执行代码的可控智能体环境…

阅读更多 →
Anthropic挖出类CRISPR新系统?AI驱动基因编辑工具发现全解析 2026/9/29 17:30:49

Anthropic挖出类CRISPR新系统?AI驱动基因编辑工具发现全解析

Anthropic自己的实验室挖出了一个类CRISPR新系统——这则消息最先不是从官网公告里看到的,而是在几个生信和基因编辑讨论群里传开的。和那种“AI又发布了一个新模型”的官宣完全不同,这次更像一份提前泄露的实验记录:没有炫目的Demo&#xff…

阅读更多 →
JESD204B同步机制详解:从CGS到SYSREF的调试指南 2026/9/29 17:30:49

JESD204B同步机制详解:从CGS到SYSREF的调试指南

搞高速数据采集和射频收发这些年,JESD204B几乎是躲不开的话题。ADC、DAC、收发机这类正经的高速转换器,接口早就从LVDS并行总线切到JESD204B了。我见过不少团队板子画得很漂亮,却在建链同步这一关卡了几个星期:要么SYNC~信号死活拉…

阅读更多 →
Node.js+Vue大学生家教兼职管理系统设计与实现完整方案 2026/9/29 17:30:49

Node.js+Vue大学生家教兼职管理系统设计与实现完整方案

我一开始拿到"nodejs基于vue大学生家教补习兼职管理系统的设计与实现"这个课题时,心里想的是:这不又是一个典型的增删改查项目吗?用户管理、课程管理、订单管理,跑一个后台就能交差。真动手才发现,家教补习这…

阅读更多 →
RTX 50系3DGS开发环境搭建实战指南 2026/9/29 17:30:49

RTX 50系3DGS开发环境搭建实战指南

1. 这不是“等发布再动手”的显卡,而是必须现在就搭好的3DGS开发环境 RTX 50系显卡还没正式发布,但整个3D高斯泼溅(3DGS)社区已经提前进入实战状态——不是在等新闻稿,而是在抢时间验证编译链、测试CUDA内核兼容性、预…

阅读更多 →
Java IO体系从原理到实战:BIO/NIO、序列化与性能排查全解析 2026/9/29 17:30:48

Java IO体系从原理到实战:BIO/NIO、序列化与性能排查全解析

做了这么多年Java,又把同事的IO代码翻出来看了一遍,还是那句话:IO这块,八股文背得再熟,一写就废的情况太多了。不管是面试官追着问NIO和BIO的区别,还是线上环境突发一个socket read timed out,或…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉