【算法集訓】基礎數據結構:四、棧

棧理解了兩天,所以遲了一天發。

一、棧的概念

棧是一個容器,是一個先進后出的線性表,類似與日常生活中的電梯、杯子等。
僅限在表尾部進行插入和刪除操作。
使用鏈表來模擬棧:

typedef int DataType; 相當于給int起一個別名
struct StackNode;
struct StackNode {DataType data;struct StackNode * next;
}

data表示數據域,next表示指針域;

1、入棧操作

void StackPushStack(struct Stack * stk, DataType dt) {struct StackNode * vtx = (struct StackNode *) malloc(sizeof(struct StackNode));vtx->next = stk->head;vtx->data = dt;stk->head = vtx;++stk->size;
}

2、出棧

void StackPopStack(struct Stack * stk) {struct StackNode * temp = stk->head;stk->head = temp->next;free(temp);--stk->size;
}

3、獲取棧頂元素

DataType StackGetTop(struct Stack * stk) {return stk->head->data;
}

二、題目

1、LCR 123. 圖書整理 I

https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/description/

定義兩個棧,一個用于入棧存放,一個用于出棧存放,將鏈表中的數據入棧再出棧就是倒序了

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
/*** Note: The returned array must be malloced, assume caller calls free().*/
int* reverseBookList(struct ListNode* head, int* returnSize) {int *inStack = (int *)malloc(sizeof(int) * 10000);int index = 0;while(head) {inStack[index++] = head->val;head = head->next;}*returnSize = 0;int *outStack = (int *)malloc(sizeof(int) * 10000);while(index--) {outStack[(*returnSize)++] = inStack[index];}free(inStack);return outStack;
}

2、1614. 括號的最大嵌套深度

https://leetcode.cn/problems/maximum-nesting-depth-of-the-parentheses/description/
我們都知道括號一定是成對出現的,所以嵌套的括號的必然是一起的,所以計算(一起出現的最大次數即可。
這里使用棧實現,入棧,出棧,最終棧中存放最多的即為答案

int maxDepth(char* s) {int top = 0; //定義棧頂int len = strlen(s); //獲取s長度int res = 0;  //結果//遍歷字符串for(int i = 0; i < len; ++i) {//如果是(入棧,)出棧if(s[i] == '(') {top++;}else if(s[i] == ')') {top--;}//判斷棧里面最大數就是深度if(top > res) res = top;}return res;}

3、LCR 027. 回文鏈表

https://leetcode.cn/problems/aMhZSa/description/
判斷回文,將給定的數組依次存入棧中,如果從棧頂開始和head比較的每一個值都相等, 則為回文數。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/bool isPalindrome(struct ListNode* head){//定義棧int * inStack = (int *)malloc(sizeof(int) * 100000);int top = 0;  //定義棧頂//復制頭結點用于存棧struct ListNode* t = head;// 存入棧while(t) {inStack[top++] = t->val;t = t->next;}// 棧頂和head從頭到尾比較,如果不相等則錯誤while(top--) {if(inStack[top] != head->val) {return false;}head = head->next;}return true;
}

以下兩個題目和上題相等。
力扣(LeetCode)官網 - 全球極客摯愛的技術成長平臺
https://leetcode.cn/problems/palindrome-linked-list-lcci/description/

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

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

相關文章

Go 協程基礎:輕松入門并發編程,解析 Goroutines 的奧秘

一、協程基本使用 1、啟動一個協程 主線程中每個100毫秒打印一次&#xff0c;總共打印2次另外開啟一個協程&#xff0c;打印10次情況一&#xff1a;打印是交替&#xff0c;證明是并行的情況二&#xff1a;開啟的協程打印2次&#xff0c;就退出了&#xff08;因為主線程退出了…

做題筆記:SQL Sever 方式做牛客SQL的題目--SQL157

----SQL157 平均播放進度大于60%的視頻類別 計算各類視頻的平均播放進度&#xff0c;將進度大于60%的類別輸出。 注&#xff1a; 播放進度播放時長視頻時長*100%&#xff0c;當播放時長大于視頻時長時&#xff0c;播放進度均記為100%。 結果保留兩位小數&#xff0c;并按播放進…

基于ssm的學生公寓管理中心系統的設計與實現論文

摘 要 現代經濟快節奏發展以及不斷完善升級的信息化技術&#xff0c;讓傳統數據信息的管理升級為軟件存儲&#xff0c;歸納&#xff0c;集中處理數據信息的管理方式。本學生公寓管理中心系統就是在這樣的大環境下誕生&#xff0c;其可以幫助管理者在短時間內處理完畢龐大的數據…

[報錯]記錄IDEA遠程開發報錯:java: Cannot run program.....

報錯內容 IDEA在進行遠程開發的時候報錯&#xff0c;內容如下&#xff1a; java: Cannot run program "/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java" (in directory "/home/jim/.cache/JetBrains/RemoteDev-IU/_home_jim_DevCodes_Github_zfile/compile-…

redis主從復制【面試必看】

在分布式系統中&#xff0c;希望使用多個服務器來部署redis&#xff0c;存在以下幾種redis的部署方式 主從模式主從哨兵集群模式 主從模式 在若干個redis節點中&#xff0c;有的是主節點&#xff0c;有的是從節點 假設有三個物理服務器&#xff08;稱為是三個節點&#xff…

(JSP)EL——優化登錄界面,獲取對象,獲取數據

EL優化登錄界面 <% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <% String path request.getContextPath(); String basePath request.getScheme()"://"request.getServerName()":"reques…

生產工序(oj題)

很有趣的一道題 關鍵在于固定工序的整合 看樣例是固定工序中間是不能插入其他工序的&#xff08;也不講清楚&#xff09;&#xff0c;如果可以的話&#xff0c;只能說可能會更麻煩 注意固定工序是按照固定工序中的第一個工序進行排序的 整合完之后&#xff0c;就是遞歸列出…

Java中的IO流①——IO流的體系、字節流、try...catch異常處理

概述 IO流的分類 IO流的體系 這四個類都是抽象類&#xff0c;所以需要實現類對象才能使用---> 字節流 FileInputStream--> 書寫細節 代碼示范 此時文件a.txt內容為abcde 使用char強轉和read方法調用五次read方法--> public static void main(String[] args) throws IO…

mysql 語言學習

整理了一下 mysql 操作語言&#xff0c;不是很全&#xff0c;部分地方也許需要修改&#xff0c;先放上來&#xff0c;有時間再慢慢完善。 一、數據庫操作 連接數據庫 $ sudo mysql [-h ip] -u root -p [-P 3306] 初始化數據庫 $ mysql_secure_installation備份數據庫 # 備…

初出茅廬的小李博客之TobudOS移植到EVB_AIoT開發板

本博客參考教程&#xff1a; https://atomgit.com/OpenAtomFoundation/TobudOS/blob/master/doc/TobudOS_EVB_AIoT_STM32_Guide.md 介紹一下EVB_AIoT開發板 這個開發板是由TobudOS開源社區聯合意法半導體、南京厚德物聯網設計的一款高性能IoT開發平臺&#xff0c;主控芯片是S…

SystemVerilog學習(0)——目錄與傳送門

一、驗證導論 SystemVerilog學習&#xff08;1&#xff09;——驗證導論-CSDN博客文章瀏覽閱讀403次。SystemVerilog自學&#xff0c;驗證系統概述&#xff0c;什么是SVhttps://blog.csdn.net/apple_53311083/article/details/133953016 二、數據類型 SystemVerilog學習&…

含掩膜mask的單通道灰度圖轉化為COCO數據集格式標簽的json文件(python)

輸入&#xff1a;單通道的灰度圖&#xff0c;灰度圖內含掩膜mask 目標&#xff1a;把灰度圖中的語義mask轉換為COCO數據集格式的json文件 輸出&#xff1a;COCO數據集格式的json文件 期間遇到的問題&#xff1a; 發現有的掩膜內部存在其他類別的掩膜&#xff0c;即mask內部還套…

枚舉類簡單使用

1、創建一個枚舉 public enum DemoEnum {// 引號里面存放的是下面所創建的屬性&#xff0c;如果不創建屬性則不能輸入引號里的值的NORMAL("正常"),DESTORY("廢棄");private String label;private DemoEnum(String label){this.label label;}public Strin…

使用.net core MVC實現圖片上傳下載

今天閑來無事&#xff0c;復習復習 1、上傳 上傳界面 <div class"text-center"><h1 class"display-4">Welcome</h1><form method"post" enctype"multipart/form-data" asp-controller"Home" asp-ac…

<HarmonyOS主題課>三方庫【課后考核】

【習題】三方庫 判斷題 三方組件是開發者在系統能力的基礎上進行了一層具體功能的封裝&#xff0c;對其能力進行拓展的工具 。 正確(True) 可以通過ohpm uninstall 指令下載指定的三方庫 錯誤(False) lottie使用loadAnimation方法加載動畫。 正確(True) 單選題 通過ohpm安…

@FunctionalInterface、Lambda表達式和方法引用

知識不回顧是會被遺忘的&#xff01; 網上看了一些相關文章&#xff0c;這里記錄一下&#xff0c;僅供參考 Java語言從JDK1.8開始引入了函數式編程。 函數式編程的核心特點是&#xff0c;函數作為一段功能代碼&#xff0c;可以像變量一樣進行引用和傳遞&#xff0c;以便在有需…

stm32 使用18B20 測試溫度

用18b20 測試溫度是非常常用的&#xff0c;不過18B20的調試不是這么容易的&#xff0c;有些內容網上很多的&#xff0c;不再重復說了&#xff0c;我先把波形說一下&#xff0c;再說程序部分&#xff1a; 整個都溫度數據的順序是&#xff1a; 1.700uS的低電平復位并測試18B20的…

【素書學習】人生境界的四個層次

馮友蘭先生認為人生境界有四個層次&#xff1a; 1、自然境界。總是依照社會習慣或本性而為&#xff0c;完全隨天地運轉而運轉&#xff0c;無明了的目的&#xff0c;不明所做的意義。日出而作&#xff0c;日落而息&#xff0c;不會去過多地思考此外的事情。不知何為苦、何為樂&…

mfc110u.dll丟失的解決方法,mfc110u.dll丟失原因是什么?

在計算機使用過程中&#xff0c;我們經常會遇到一些錯誤提示&#xff0c;其中之一就是“mfc110u.dll文件丟失”。那么&#xff0c;mfc110u.dll是什么&#xff1f;為什么會出現丟失的情況呢&#xff1f;本文將為您詳細介紹mfc110u.dll文件的含義、丟失原因以及解決方法。 首先&…

MyBatis進階之結果集映射注解版

文章目錄 注解實現結果集映射注解實現關系映射常用功能注解匯總 注解實現結果集映射 注意 配置結果集映射&#xff0c;只用看 SQL 執行結果&#xff0c;不看 SQL 語句&#xff01; 注意 由于注解在映射結果集上沒有實現 <resultMap> 的 100% 功能&#xff0c;因此&#x…