(力扣)用两个栈实现队列

这里是栈的源代码:栈和队列的实现
当然,自己也可以写一个栈来用,对题目来说不影响,只要符合栈的特点就行。
题目:
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):
实现 MyQueue 类:
void push(int x)将元素 x 推到队列的末尾int pop()从队列的开头移除并返回元素int peek()返回队列开头的元素boolean empty()如果队列为空,返回true;否则,返回false
题解:
做题前需要的栈:
#include <stdio.h> #include <stdlib.h> #include <assert.h> #include <stdbool.h>typedef int DataType; typedef struct Stack {DataType* data;int top;int capacity; }Stack;void Init(Stack *st); void Push(Stack* st, DataType x); void Pop(Stack* st); DataType GetTop(Stack* st); bool Empty(Stack* st); void Destroy(Stack* st); int Size(Stack* st);void Init(Stack* st) {assert(st);st->data = NULL;st->top = 0;st->capacity = 0; }void Push(Stack* st, DataType x) {assert(st);if (st->capacity == st->top){int newcapacity = (st->capacity == 0) ? 4 : st->capacity * 2;DataType* temp = (DataType*)realloc(st->data, sizeof(DataType) * newcapacity);if (temp == NULL){perror("realloc fail");exit(-1);}st->data = temp;st->capacity = newcapacity;}st->data[st->top++] = x; }void Pop(Stack* st) {assert(st);assert(st->top > 0);st->top--; }DataType GetTop(Stack* st) {assert(st);assert(st->top > 0);return st->data[st->top - 1]; }bool Empty(Stack* st) {assert(st);return (st->top == 0); }void Destroy(Stack* st) {assert(st);free(st->data);st->data = NULL;st->top = st->capacity = 0;}int Size(Stack* st) {assert(st);return st->top; }
题目正题:
//定义出两个栈
typedef struct
{Stack push;Stack pop;
} MyQueue;
//初始化队列
MyQueue* myQueueCreate()
{MyQueue* obj = (MyQueue*)malloc(sizeof(MyQueue));Init(&obj->push);Init(&obj->pop);return obj;
}
//向队列中插入元素
void myQueuePush(MyQueue* obj, int x)
{Push(&obj->push,x);
}
//元素出队列
int myQueuePop(MyQueue* obj)
{int ret = myQueuePeek(obj);Pop(&obj->pop);return ret;
}
//返回队列开头的元素
int myQueuePeek(MyQueue* obj)
{if(Empty(&obj->pop)){int size = Size(&obj->push);for(int i=0; i<size; i++){Push(&obj->pop,GetTop(&obj->push));Pop(&obj->push);}}return GetTop(&obj->pop);
}
//判断队列是否为空
bool myQueueEmpty(MyQueue* obj)
{return Empty(&obj->pop) && Empty(&obj->push);
}
//销毁队列
void myQueueFree(MyQueue* obj)
{free((&obj->push)->data);free((&obj->pop)->data);free(obj);
}
Lei宝啊:我的主页鸭
愿所有美好如期而遇
相关文章:
(力扣)用两个栈实现队列
这里是栈的源代码:栈和队列的实现 当然,自己也可以写一个栈来用,对题目来说不影响,只要符合栈的特点就行。 题目: 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、pe…...
【自动化测试框架】关于unitttest你需要知道的事
一、UnitTest单元测试框架提供了那些功能 1.提供用例组织和执行 如何定义一条“测试用例”? 如何灵活地控制这些“测试用例”的执行? 2.提供丰定的断言方法 当测试用例的执行结果与预期结果不一致时,判定测试用例失败。在自动化测试中,通过“断言”…...
手机便签中可以打勾的圆圈或小方块怎么弄?
在日常的生活和工作中,很多网友除了使用手机便签来记录灵感想法、读书笔记、各种琐事、工作事项外,还会用它来记录一些清单,例如待办事项清单、读书清单、购物清单、旅行必备物品清单等。 在按照记录的清单内容来执行的时候,为了…...
【Linux】gdb 的使用
目录 1. 使用 gdb 的前置工作 2. 如何使用 gdb 进行调试 1、如何看到我的代码 2、如何打断点 3、怎么运行程序 4、如何进行逐过程调试 5、如何进行逐语句调试 6、如何监视变量值 7、如何跳到指定位置 8、运行完一个函数 9、怎么跳到下一个断点 10、如何禁用/开启…...
C++11之右值引用
C11之右值引用 传统的C语法中就有引用的语法,而C11中新增了的 右值引用(rvalue reference)语法特性,所以从现在开始我们之前学习的引用就叫做左值引用(lvalue reference)。无论左值引用还是右值引用&#…...
【PHP的设计模式】
PHP的设计模式 一、策略模式二、工厂模式三、单例模式四、注册模式五、适配器模式六、观察者模式 一、策略模式 策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用。 策略模式指的是程序中涉及决策控制的一种模式。策略模式功能非常强…...
React 之 Redux - 状态管理
一、前言 1. 纯函数 函数式编程中有一个非常重要的概念叫纯函数,JavaScript符合函数式编程的范式,所以也有纯函数的概念 确定的输入,一定会产生确定的输出 函数在执行过程中,不能产生副作用 2. 副作用 表示在执行一个函数时&a…...
集合转数组
首先,我们在看到集合转数组的时候可能第一个想到的就是toArray(),但是我们在调用 toArray()的时候,可能会遇到异常 java.lang.ClassCastException;这是因为 toArray()方法返回的类型是 Obejct[],如果我们将其转换成其他类型&#…...
使用Python将Word文档转换为PDF的方法
摘要: 文介绍了如何使用Python编程语言将Word文档转换为PDF格式的方法。我们将使用python-docx和pywin32库来实现这个功能,这些库提供了与Microsoft Word应用程序的交互能力。 正文: 在现实生活和工作中,我们可能会遇到将Word文…...
Java 判断一个字符串在另一个字符串中出现的次数
1.split实现 package com.jiayou.peis.official.account.biz.utils;public class Test {public static void main(String[] args) {String k"0110110100100010101111100101011001101110111111000101101001100010101" "011101100101011010100011111010111001001…...
设计模式十三:代理(Proxy Pattern)
代理模式是一种结构型设计模式,它允许通过在对象和其真实服务之间添加一个代理对象来控制对该对象的访问。代理对象充当了客户端和真实服务对象之间的中介,并提供了额外的功能,如远程访问、延迟加载、访问控制等。 代理模式的使用场景包括&a…...
Redis基础 (三十八)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、概述 1.1 NoSQL 1.2 Redis 二、安装 2.1 安装方式 : 三、目录结构 3.1 rpm -ql redis 3.2 /etc/redis.conf 主配置文件 3.3 /var/lib/redis …...
maven中的scope
1、compile:默认值,可省略不写。此值表示该依赖需要参与到项目的编译、测试以及运行周期中,打包时也要包含进去。 2、test:该依赖仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,…...
【网络基础实战之路】实现RIP协议与OSPF协议间路由交流的实战详解
系列文章传送门: 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 PS:本要求基于…...
CNN(四):ResNet与DenseNet结合--DPN
🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊|接辅导、项目定制 前面实现了ResNet和DenseNet的算法,了解了它们有各自的特点: ResNet:通过建立前面层与后面层之间的“短路…...
汽车EBSE测试流程分析(四):反思证据及当前问题解决
EBSE专题连载共分为“五个”篇章。此文为该连载系列的“第四”篇章,在之前的“篇章(三)”中已经结合具体研究实践阐述了“步骤二,通过系统调研确定改进方案”等内容。那么,在本篇章(四)中&#…...
如何在Spring MVC中使用@ControllerAdvice创建全局异常处理器
文章目录 前言一、认识注解:RestControllerAdvice和ExceptionHandler二、使用步骤1、封装统一返回结果类2、自定义异常类封装3、定义全局异常处理类4、测试 总结 前言 全局异常处理器是一种 🌟✨机制,用于处理应用程序中发生的异常ÿ…...
2023/08/05【网络课程总结】
1. 查看git拉取记录 git reflog --dateiso|grep pull2. TCP/IP和OSI七层参考模型 3. DNS域名解析 4. 预检请求OPTIONS 5. 渲染进程的回流(reflow)和重绘(repaint) 6. V8解析JavaScript 7. CDN负载均衡的简单理解 8. 重学Ajax 重学Ajax满神 9. 对于XML的理解 大白话叙述XML是…...
log_softmax比softmax更好?
多类别分类的一个trick 探讨一下在多类别分类场景,如翻译、生成、目标检测等场景下,使用log_softmax的效果优于softmax的原因。 假设词典大小为10,一个词的ID为9(即词典的最后一个词),使用交叉熵作为损失函…...
[LeetCode - Python]344.反转字符串(Easy);345. 反转字符串中的元音字母(Easy);977. 有序数组的平方(Easy)
1.题目 344.反转字符串(Easy) 1.代码 class Solution:def reverseString(self, s: List[str]) -> None:"""Do not return anything, modify s in-place instead."""# 双指针left,right 0, len(s)-1while left < right:temp s[left]s[…...
SDMatte+在影视后期应用:绿幕替代方案探索、道具透明化处理与VFX资产快速提取
SDMatte在影视后期应用:绿幕替代方案探索、道具透明化处理与VFX资产快速提取 1. 影视后期中的抠图挑战 在影视后期制作中,高质量的抠图技术是视觉特效(VFX)的基础。传统绿幕拍摄虽然成熟,但存在诸多限制: 需要专门的拍摄场地和…...
intv_ai_mk11惊艳效果展示:Llama中型模型在中文解释说明任务中的表现
intv_ai_mk11惊艳效果展示:Llama中型模型在中文解释说明任务中的表现 1. 模型核心能力概览 intv_ai_mk11作为基于Llama架构的中等规模文本生成模型,在中文解释说明任务中展现出令人印象深刻的能力。这个开箱即用的解决方案特别适合需要清晰、准确表达的…...
OpenClaw浏览器扩展:Kimi-VL-A3B-Thinking网页图文即时分析工具
OpenClaw浏览器扩展:Kimi-VL-A3B-Thinking网页图文即时分析工具 1. 为什么需要浏览器增强工具 作为一个经常需要从网页获取信息的技术写作者,我长期被两个问题困扰:一是网页内容过于冗长,需要手动筛选关键信息;二是遇…...
Oak安全最佳实践:10个防范常见Web攻击的终极指南
Oak安全最佳实践:10个防范常见Web攻击的终极指南 【免费下载链接】oak A middleware framework for handling HTTP with Deno 🐿️ 🦕 项目地址: https://gitcode.com/gh_mirrors/oa/oak Oak是一个基于Deno的现代化中间件框架…...
SEO_ 详解SEO优化中内容与外部链接的建设策略
SEO优化中内容与外部链接的建设策略 在当前互联网营销领域,SEO优化(搜索引擎优化)是提升网站流量和品牌知名度的关键手段。其中,内容与外部链接的建设策略是两大核心要素。本文将详解SEO优化中内容与外部链接的建设策略ÿ…...
STM32智能展柜控制系统设计与实现
1. 项目概述在博物馆文物保存领域,环境参数的精确控制一直是个技术难点。我最近完成了一个基于STM32的智能展柜控制系统项目,这套方案能够实时监测并调节展柜内的温湿度及光照强度,为珍贵文物提供最佳保存环境。相比传统的人工监测方式&#…...
嵌入式ONPS协议栈:轻量级TCP/IP实现与优化
1. ONPS协议栈概述ONPS是一款专为资源受限的嵌入式系统设计的开源网络协议栈,由国内开发者完全自主开发实现。作为一名长期从事嵌入式网络开发的工程师,我第一次接触ONPS时就对其轻量级设计和完整的功能实现印象深刻。与常见的LwIP等协议栈相比ÿ…...
Shox96 Progmem:嵌入式Flash短字符串高效压缩方案
1. Shox96 Progmem 压缩库技术解析:面向嵌入式 Flash 的短字符串高效压缩方案1.1 工程背景与设计动因在资源受限的嵌入式系统中,Flash 存储空间始终是关键瓶颈。以典型 Cortex-M0/M3 MCU(如 STM32F072、nRF52832)为例,…...
2026短视频获客决胜点:AI矩阵系统哪家好?深度评测四大“增长黑科技”
摘要:进入2026年,短视频矩阵运营已从“人力的博弈”全面进化为“算法、AI产力与底层架构安全”的代际竞赛。当企业主在决策“AI矩阵系统哪家好”时,考量标准已不再是简单的分发功能,而是国内IP隔离的稳健性、全球大模型࿰…...
新手避坑指南:如何根据你的Python学习路径选择Jupyter、PyCharm或VS Code
Python新手工具选择指南:从Jupyter到PyCharm的实战路径规划 第一次打开Python安装包时,那种混杂着期待与困惑的感觉我至今记得清晰——就像站在乐高积木货架前的小孩,明明每盒都写着"Python",拆开后却发现里面的零件形状…...
