【leetcode】用隊列實現棧

大家好,我是蘇貝,本篇博客帶大家刷題,如果你覺得我寫的還不錯的話,可以給我一個贊👍嗎,感謝??
在這里插入圖片描述


點擊查看題目

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

思路:

在這里插入圖片描述

在做此題之前,我們先要實現隊列,這在上個博客中已經寫過,在這就不在贅述,下面是實現隊列的代碼
點擊進入博客:【數據結構】實現隊列

#include<stdio.h>
#include<assert.h>
#include<stdbool.h>typedef int QDataType;typedef struct QueueNode
{struct Queue* next;QDataType val;
}QNode;typedef struct Queue
{QNode* phead;QNode* ptail;int size;
}Queue;//初始化
void QueueInit(Queue* pq)
{assert(pq);pq->phead = NULL;pq->ptail = NULL;pq->size = 0;
}//銷毀
void QueueDestroy(Queue* pq)
{assert(pq);while (pq->phead){QNode* next = pq->phead->next;free(pq->phead);pq->phead = next;}pq->ptail = NULL;pq->size = 0;
}//隊尾插入
void QueuePush(Queue* pq, QDataType x)
{assert(pq);//創建一個新節點QNode* newnode = (QNode*)malloc(sizeof(QNode));if (newnode == NULL){perror("malloc fail");return;}newnode->val = x;newnode->next = NULL;//插入if (pq->phead == NULL){pq->ptail = pq->phead = newnode;}else{pq->ptail->next = newnode;pq->ptail = newnode;}pq->size++;
}//隊頭刪除
void QueuePop(Queue* pq)
{assert(pq);assert(pq->phead);Queue* next = pq->phead->next;free(pq->phead);pq->phead = next;if (pq->phead == NULL){pq->ptail = NULL;}pq->size--;
}//顯示第一個節點的值
QDataType QueueFront(Queue* pq)
{assert(pq);assert(pq->phead);return pq->phead->val;
}//顯示最后一個節點的值
QDataType QueueBack(Queue* pq)
{assert(pq);assert(pq->phead);return pq->ptail->val;
}//是否為空
bool QueueEmpty(Queue* pq)
{assert(pq);return pq->phead == NULL;
}//隊列的大小
int QueueSize(Queue* pq)
{assert(pq);return pq->size;
}

現在我們來寫本題的代碼

typedef struct {Queue q1;Queue q2;
} MyStack;MyStack* myStackCreate() {MyStack* obj=(MyStack*)malloc(sizeof(MyStack));QueueInit(&obj->q1);QueueInit(&obj->q2);return obj;
}void myStackPush(MyStack* obj, int x) {if(!QueueEmpty(&obj->q1)){QueuePush(&obj->q1,x);}else{QueuePush(&obj->q2,x);}
}int myStackPop(MyStack* obj) {Queue* emptyq=&obj->q1;Queue* notemptyq=&obj->q2;if(!QueueEmpty(&obj->q1)){emptyq=&obj->q2;notemptyq=&obj->q1;}while(QueueSize(notemptyq)>1){QueuePush(emptyq,QueueFront(notemptyq));QueuePop(notemptyq);}int top=QueueFront(notemptyq);QueuePop(notemptyq);return top;
}int myStackTop(MyStack* obj) {Queue* emptyq=&obj->q1;Queue* notemptyq=&obj->q2;if(!QueueEmpty(&obj->q1)){emptyq=&obj->q2;notemptyq=&obj->q1;}return QueueBack(notemptyq);
}bool myStackEmpty(MyStack* obj) {return QueueEmpty(&obj->q1)&&QueueEmpty(&obj->q2);
}void myStackFree(MyStack* obj) {QueueDestroy(&obj->q1);QueueDestroy(&obj->q2);free(obj);
}

好了,那么本篇博客就到此結束了,如果你覺得本篇博客對你有些幫助,可以給個大大的贊👍嗎,感謝看到這里,我們下篇博客見??

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717422.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717422.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717422.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

學習人工智能的方法及方向!

目錄 一、第一部分&#xff1a;了解人工智能 二、人工智能學習路線圖 三、職業規劃 四、未來展望 五、總結 在這個信息爆炸的時代&#xff0c;想要系統性地學習人工智能&#xff08;AI&#xff09;并找到對應方向的工作&#xff0c;你需要一個明確的學習路徑和職業規劃。本…

復合機器人是一種集成了移動機器人

復合機器人是一種集成了移動機器人、協作機器人和機器視覺等多項功能的新型機器人。它的開發目的是為了解決工廠物流中最后一米的問題&#xff0c;提供智能搬運解決方案。復合機器人不僅集成了自主移動機器人&#xff08;AMR&#xff09;、機械臂等工作單元&#xff0c;還使用了…

Java電梯模擬

Java電梯模擬 文章目錄 Java電梯模擬前言一、UML類圖二、代碼三、測試 前言 此程序為單線程簡單模擬電梯(初版)&#xff0c;如果存在問題或者設計不合理的地方&#xff0c;請大家幫忙指出。 一、UML類圖 二、代碼 電梯調度器 package cn.xx.evevator;import java.util.*;pub…

#LLM入門|Prompt#2.1_第二部分:搭建基于 ChatGPT 的問答系統_簡介_Introduction

《第二部分&#xff1a;搭建基于 ChatGPT 的問答系統》&#xff01; 本部分基于吳恩達老師與OpenAI合作開發的課程《Building Systems with the ChatGPT API》創作&#xff0c;旨在指導開發者基于ChatGPT的API進行智能問答系統的構建。 課程內容 課程背景&#xff1a; 使用C…

Web3游戲基礎設施提供商Stardust為Sui上的游戲開發者提供支持

Stardust將其在錢包服務&#xff08;wallets-as-a-service&#xff09;基礎設施和用戶獲取平臺方面的專業知識帶到了Sui&#xff0c;為游戲開發者提供了關鍵的幫助&#xff0c;以吸引玩家。近日&#xff0c;Stardust公司宣布將為Sui游戲開發者調整其成熟的錢包服務&#xff08;…

MySQL:開始深入其數據(四)select子查詢

select眼熟吧?(都三節了) 又開始學習了 在 MySQL 中&#xff0c;子查詢&#xff08;subquery&#xff09;是指在一個查詢內嵌套另一個完整的 SELECT 語句。子查詢可以嵌套在 SELECT、INSERT、UPDATE、DELETE 語句中&#xff0c;用于從內部查詢結果中獲取數據&#xff0c;進而完…

vue3 的await async

在 Vue 3&#xff08;以及大多數現代的 JavaScript 環境中&#xff09;中&#xff0c;async 和 await 是用來處理異步操作的關鍵字。這些關鍵字使你能夠以同步的方式編寫異步代碼&#xff0c;使代碼更加易讀、易寫&#xff0c;并且有助于管理異步流程。 async async 關鍵字用…

基于springboot的寵物咖啡館平臺的設計與實現論文

基于Spring Boot的寵物咖啡館平臺的設計與實現 摘要 隨著信息技術在管理上越來越深入而廣泛的應用&#xff0c;管理信息系統的實施在技術上已逐步成熟。本文介紹了基于Spring Boot的寵物咖啡館平臺的設計與實現的開發全過程。通過分析基于Spring Boot的寵物咖啡館平臺的設計與…

每日一題——LeetCode1566.重復至少K次且長度為M的模式

方法一 暴力枚舉 var containsPattern function(arr, m, k) {const n arr.length;for (let l 0; l < n - m * k; l) {let offset;for (offset 0; offset < m * k; offset) {if (arr[l offset] ! arr[l offset % m]) {break;}}if (offset m * k) {return true;}}r…

k8s 網絡概念與策略控制

一、Kubernetes 基本網絡模型 Kubernetes 的容器網絡模型可以把它歸結為約法三章和四大目標。 1、約法三章 約法三章確保了Kubernetes容器網絡模型的基本特性&#xff1a; ① 任意兩個 pod 之間可以直接通信&#xff1a;在Kubernetes中&#xff0c;每個 Pod 都被分配了一個…

題記(47)--連續因子

目錄 一、題目內容 二、輸入描述 三、輸出描述 四、輸入輸出示例 五、完整C語言代碼 一、題目內容 一個正整數 N 的因子中可能存在若干連續的數字。例如 630 可以分解為 3567&#xff0c;其中 5、6、7 就是 3 個連續的數字。給定任一正整數 N&#xff0c;要求編寫程序求出…

React-router的創建和第一個組件

需要先學react框架 首先&#xff1a;找到一個文件夾&#xff0c;在文件夾出打開cmd窗口&#xff0c;輸入如下圖的口令 npx create-react-app demo 然后等待安裝 安裝完成 接下來進入創建的demo實例 cd demo 然后可以用如下方式打開vscode code . 注意&#xff1a;不要忽略點號與…

Vue--》打造簡易直播應用平臺項目實戰

今天開始使用 vue3 + ts 搭建一個簡易直播應用平臺項目,因為文章會將項目的每一個地方代碼的書寫都會講解到,所以本項目會分成好幾篇文章進行講解,我會在最后一篇文章中會將項目代碼開源到我的github上,大家可以自行去進行下載運行,希望本文章對有幫助的朋友們能多多關注本…

AWS對文本進行語言識別

AWS提供了名為Amazon Comprehend 的服務&#xff0c;它支持對文本進行語言識別。Amazon Comprehend 是一項自然語言處理&#xff08;NLP&#xff09;服務&#xff0c;它可以用于分析文本并提取有關文本內容的信息。 我們可以通過使用 Amazon Comprehend API 輕松地集成這些功能…

機械臂與tftp

機械臂&#xff1a; #include<myhead.h> #define SER_IP "192.168.126.2" #define SER_PORT 8888#define CLI_IP "192.168.252.165" #define CLI_PORT 9999int main(int argc, const char *argv[]) {int cfdsocket(AF_INET,SOCK_STREAM,0);if(cfd-…

支持向量機 SVM | 線性可分:公式推導

目錄 一. SVM的優越性二. SVM算法推導小節概念 在開始講述SVM算法之前&#xff0c;我們先來看一段定義&#xff1a; 支持向量機(Support VecorMachine, SVM)本身是一個二元分類算法&#xff0c;支持線性分類和非線性分類的分類應用&#xff0c;同時通過OvR或者OvO的方式可以應用…

安裝Docker及DockerCompose

0.安裝Docker Docker 分為 CE 和 EE 兩大版本。CE 即社區版&#xff08;免費&#xff0c;支持周期 7 個月&#xff09;&#xff0c;EE 即企業版&#xff0c;強調安全&#xff0c;付費使用&#xff0c;支持周期 24 個月。 Docker CE 分為 stable test 和 nightly 三個更新頻道…

10.輪廓系數-機器學習模型性能的常用的評估指標

輪廓系數&#xff08;Silhouette Coefficient&#xff09;是評估聚類算法效果的常用指標之一。它結合了聚類的凝聚度&#xff08;Cohesion&#xff09;和分離度&#xff08;Separation&#xff09;&#xff0c;能夠量化聚類結果的緊密度和分離度。 背景 1.聚類分析的背景 在…

NDK介紹

NDK&#xff08;Native Development Kit&#xff09;是一個用于在Android平臺上開發C和C代碼的工具集。它允許開發人員使用C和C編寫部分代碼&#xff0c;并將其編譯為本機代碼庫&#xff08;.so文件&#xff09;&#xff0c;然后通過JNI在Java應用程序中調用這些本地代碼。 ND…

CUDA學習筆記01:vs2019環境配置

為了在window11 vs2019下使用CUDA編程&#xff0c;配置了一下環境&#xff0c;但是我電腦一開始自帶CUDA&#xff0c;然后再安裝的vs2019&#xff0c;這樣安裝順序上是不對的&#xff0c;vs2019找不到CUDA配置項&#xff0c;網上找了很多辦法貌似都不好使而且很復雜。 那么最快…