国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【追夢(mèng)之旅】——棧居然還能這樣玩?!+ 力扣 - 有效括號(hào)

這篇具有很好參考價(jià)值的文章主要介紹了【追夢(mèng)之旅】——棧居然還能這樣玩?!+ 力扣 - 有效括號(hào)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


【追夢(mèng)之旅】——棧居然還能這樣玩?!+ 力扣 - 有效括號(hào)

? ?
??博客昵稱(chēng):博客小夢(mèng)
??最喜歡的座右銘:全神貫注的上吧!?。?br> ??作者簡(jiǎn)介:一名熱愛(ài)C/C++,算法等技術(shù)、喜愛(ài)運(yùn)動(dòng)、熱愛(ài)K歌、敢于追夢(mèng)的小博主!

??博主小留言:哈嘍!??各位CSDN的uu們,我是你的博客好友小夢(mèng),希望我的文章可以給您帶來(lái)一定的幫助,話不多說(shuō),文章推上!歡迎大家在評(píng)論區(qū)嘮嗑指正,覺(jué)得好的話別忘了一鍵三連哦!??
【追夢(mèng)之旅】——棧居然還能這樣玩?!+ 力扣 - 有效括號(hào)

前言??

? ? 哈嘍各位友友們??,我今天又學(xué)到了很多有趣的知識(shí)現(xiàn)在迫不及待的想和大家分享一下!??我僅已此文,手把手帶領(lǐng)大家棧的實(shí)現(xiàn)和力扣題解知識(shí)~ 都是精華內(nèi)容,可不要錯(cuò)過(guò)喲?。。??????

什么是棧?

? ?棧和順序表和鏈表一樣,是線性結(jié)構(gòu)的。棧可以用數(shù)組實(shí)現(xiàn),也可以用鏈表實(shí)現(xiàn)。這里采用的是動(dòng)態(tài)數(shù)組(順序結(jié)構(gòu))實(shí)現(xiàn)的方式。棧的特點(diǎn)是LIFO。什么是“LIFO”呢?用中文簡(jiǎn)單的來(lái)說(shuō)就是后進(jìn)先出。也有人會(huì)叫先進(jìn)后出,其實(shí)都是同一個(gè)意思。

棧的C語(yǔ)言實(shí)現(xiàn)

頭文件編寫(xiě)源碼:

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>
typedef int STDataType;

//順序棧
typedef struct STNode
{
	STDataType* a;
	int top;
	int capacity;
}ST;

void STInit(ST* pst);
void STDestroy(ST* pst);
void STPush(ST* pst, STDataType x);
void STPop(ST* pst);
bool STEmpty(ST* pst);
STDataType STTop(ST* pst);
int STSize(ST* pst);



功能文件編寫(xiě)源碼:

#define _CRT_SECURE_NO_WARNINGS 1
#include"Stack.h"
void STInit(ST* pst)
{
	assert(pst);
	pst->a = NULL;
	//top指向棧頂元素的下一個(gè)位置
	pst->capacity = pst->top = 0;
}
void STDestroy(ST* pst)
{
	assert(pst);
	free(pst->a);
	pst->capacity = pst->top = 0;
	pst->a = NULL;
}
void STPush(ST* pst, STDataType x)
{
	assert(pst);
	//擴(kuò)容
	if (pst->capacity == pst->top)
	{
		int newcapacity = pst->capacity == 0 ? 4 : 2 * (pst->capacity);
        STDataType* tem = (STDataType*)realloc(pst->a, sizeof(STDataType) * newcapacity);
		if (tem == NULL)
		{
			perror("realloc fail\n");
			exit(-1);
		}
		pst->capacity = newcapacity;
		pst->a = tem;
	}
	pst->a[pst->top] = x;
	(pst->top)++;
}
bool STEmpty(ST* pst)
{
	assert(pst);
	return pst->top == 0;
}

void STPop(ST* pst)
{
	assert(pst);
	assert(!STEmpty(pst));
	(pst->top)--;
}

STDataType STTop(ST* pst)
{
	assert(pst);
	assert(!STEmpty(pst));
	return pst->a[pst->top - 1];
}
int STSize(ST* pst)
{
	assert(pst);
	return pst->top;
}

測(cè)試文件編寫(xiě)源碼:

#define _CRT_SECURE_NO_WARNINGS 1
#include"Stack.h"

int main()
{

	//ST s;
	//STInit(&s);
	//STPush(&s, 1);
	//STPush(&s, 2);
	//STPush(&s, 3);
	//STPush(&s, 4);
	//STPush(&s, 3);
	//STPush(&s, 4);
	//while (!STEmpty(&s))
	//{
	//	printf("%d ", STTop(&s));
	//	STPop(&s);
	//}
	//printf("\n");

	ST s;
	STInit(&s);
	STPush(&s, 1);
	STPush(&s, 2);
	STPush(&s, 3);
	STPush(&s, 4);
	STPop(&s);
	STPop(&s);
	while (!STEmpty(&s))
	{
		printf("%d ", STTop(&s));
		STPop(&s);
	}
	printf("\n");

	return 0;
}

運(yùn)行結(jié)果截圖:
【追夢(mèng)之旅】——棧居然還能這樣玩?!+ 力扣 - 有效括號(hào)

力扣題解——有效的括號(hào)

誰(shuí)說(shuō)C語(yǔ)言不能“C”,接下來(lái)我用C語(yǔ)言手撕這道題目。這道題目非常巧妙的運(yùn)用到了棧這個(gè)特點(diǎn)
我的做法是:

  • 先讓左括號(hào)入棧
  • 遇到右括號(hào)在出棧

不理解上述思想的可以自己畫(huà)圖理解理解,這個(gè)我相信難不倒大家,下面是我畫(huà)的一個(gè)比較粗糙的圖解~
【追夢(mèng)之旅】——棧居然還能這樣玩?!+ 力扣 - 有效括號(hào)
如果用C嘎嘎來(lái)寫(xiě),則可以直接調(diào)用庫(kù)函數(shù)的棧,而C語(yǔ)言就比較難受了。因?yàn)镃語(yǔ)言沒(méi)有這樣的庫(kù)函數(shù),所以我們需要首先一個(gè)棧,但是不能說(shuō)C語(yǔ)言就不能做,照樣可以"C"! 。前面的棧我已經(jīng)寫(xiě)好了,直接ctrl c + ctrl v ,復(fù)制一份到題目中即可。

題目源碼:


typedef int STDataType;

//順序棧
typedef struct STNode
{
	STDataType* a;
	int top;
	int capacity;
}ST;

void STInit(ST* pst);
void STDestroy(ST* pst);
void STPush(ST* pst, STDataType x);
void STPop(ST* pst);
bool STEmpty(ST* pst);
STDataType STTop(ST* pst);
int STSize(ST* pst);
#define _CRT_SECURE_NO_WARNINGS 1

void STInit(ST* pst)
{
	assert(pst);
	pst->a = NULL;
	//top指向棧頂元素的下一個(gè)位置
	pst->capacity = pst->top = 0;
}
void STDestroy(ST* pst)
{
	assert(pst);
	free(pst->a);
	pst->capacity = pst->top = 0;
	pst->a = NULL;
}
void STPush(ST* pst, STDataType x)
{
	assert(pst);
	//擴(kuò)容
	if (pst->capacity == pst->top)
	{
		int newcapacity = pst->capacity == 0 ? 4 : 2 * (pst->capacity);
        STDataType* tem = (STDataType*)realloc(pst->a, sizeof(STDataType) * newcapacity);
		if (tem == NULL)
		{
			perror("realloc fail\n");
			exit(-1);
		}
		pst->capacity = newcapacity;
		pst->a = tem;
	}
	pst->a[pst->top] = x;
	(pst->top)++;
}
bool STEmpty(ST* pst)
{
	assert(pst);
	return pst->top == 0;
}

void STPop(ST* pst)
{
	assert(pst);
	assert(!STEmpty(pst));
	(pst->top)--;
}

STDataType STTop(ST* pst)
{
	assert(pst);
	assert(!STEmpty(pst));
	return pst->a[pst->top - 1];
}
int STSize(ST* pst)
{
	assert(pst);
	return pst->top;
}



bool isValid(char * s)
{
    ST st;
    STInit(&st);
    //循環(huán)遍歷字符串s,遇到\0結(jié)束
    while(*s)
    {
        if(*s == '('
        || *s == '['
        || *s == '{')
        {
            STPush(&st,*s);
        }
        else
        {
            if(STEmpty(&st))
            {
                STDestroy(&st);
                return false;
            }
            char Top = STTop(&st);
            STPop(&st);
            if(*s == ')' && Top != '('
            || *s == ']' && Top != '['
            || *s == '}' && Top != '{')
            {
                STDestroy(&st);
                return false;
            }
        }
        s++;
    }
    bool ret = STEmpty(&st);
    STDestroy(&st);
    return ret;
}

運(yùn)行結(jié)果截圖:
【追夢(mèng)之旅】——棧居然還能這樣玩?!+ 力扣 - 有效括號(hào)

總結(jié)撒花??

? ?本篇文章旨在分享的是棧的C語(yǔ)言實(shí)現(xiàn)和力扣題解知識(shí)。希望大家通過(guò)閱讀此文有所收獲!
? ???如果我寫(xiě)的有什么不好之處,請(qǐng)?jiān)谖恼孪路浇o出你寶貴的意見(jiàn)??。如果覺(jué)得我寫(xiě)的好的話請(qǐng)點(diǎn)個(gè)贊贊和關(guān)注哦~??????文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-453460.html

到了這里,關(guān)于【追夢(mèng)之旅】——棧居然還能這樣玩?!+ 力扣 - 有效括號(hào)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 這樣delete居然不走索引

    這樣delete居然不走索引

    由于業(yè)務(wù)變遷,合規(guī)要求,我們需要?jiǎng)h除大量非本公司的數(shù)據(jù),涉及到上百?gòu)埍?,幾個(gè)T的數(shù)據(jù)清洗。我們的做法是先從基礎(chǔ)數(shù)據(jù)出發(fā),將要?jiǎng)h除的數(shù)據(jù)id收集到一張表,然后再由上往下刪除子表,多線程并發(fā)處理。 我們使用的是阿里的polardb,完全兼容mysql協(xié)議,5.7版本,RC隔

    2024年02月04日
    瀏覽(16)
  • 追夢(mèng)之旅【數(shù)據(jù)結(jié)構(gòu)篇】——詳解C語(yǔ)言動(dòng)態(tài)實(shí)現(xiàn)順序表

    追夢(mèng)之旅【數(shù)據(jù)結(jié)構(gòu)篇】——詳解C語(yǔ)言動(dòng)態(tài)實(shí)現(xiàn)順序表

    ? ? ??博客昵稱(chēng):博客小夢(mèng) ??最喜歡的座右銘:全神貫注的上吧?。。???作者簡(jiǎn)介:一名熱愛(ài)C/C++,算法等技術(shù)、喜愛(ài)運(yùn)動(dòng)、熱愛(ài)K歌、敢于追夢(mèng)的小博主! ??博主小留言:哈嘍! ??各位CSDN的uu們,我是你的博客好友小夢(mèng),希望我的文章可以給您帶來(lái)一定的幫助,話不

    2024年01月24日
    瀏覽(26)
  • 追夢(mèng)之旅【數(shù)據(jù)結(jié)構(gòu)篇】——C語(yǔ)言手撕八大經(jīng)典排序

    追夢(mèng)之旅【數(shù)據(jù)結(jié)構(gòu)篇】——C語(yǔ)言手撕八大經(jīng)典排序

    ? ? ??博客昵稱(chēng):博客小夢(mèng) ??最喜歡的座右銘:全神貫注的上吧!?。???作者簡(jiǎn)介:一名熱愛(ài)C/C++,算法等技術(shù)、喜愛(ài)運(yùn)動(dòng)、熱愛(ài)K歌、敢于追夢(mèng)的小博主! ??博主小留言:哈嘍! ??各位CSDN的uu們,我是你的博客好友小夢(mèng),希望我的文章可以給您帶來(lái)一定的幫助,話不

    2024年02月17日
    瀏覽(24)
  • C語(yǔ)言中浮點(diǎn)數(shù)居然是這樣存儲(chǔ)的?(深度剖析)

    C語(yǔ)言中浮點(diǎn)數(shù)居然是這樣存儲(chǔ)的?(深度剖析)

    大家在寫(xiě)C語(yǔ)言中都用過(guò)浮點(diǎn)數(shù)float,和double。但是你們知道在內(nèi)存中是怎么存儲(chǔ)的嗎? 在生活中我們常見(jiàn)的浮點(diǎn)數(shù): 3.14 1E10 這種科學(xué)計(jì)數(shù)法:由于小數(shù)點(diǎn)可以左右移動(dòng),所以我們稱(chēng)為浮點(diǎn)數(shù)。 C語(yǔ)言常用的浮點(diǎn)數(shù)有: ?????????? float ?????????? doul

    2024年02月11日
    瀏覽(46)
  • 追夢(mèng)之旅【數(shù)據(jù)結(jié)構(gòu)篇】——詳解小白如何使用C語(yǔ)言實(shí)現(xiàn)堆數(shù)據(jù)結(jié)構(gòu)

    追夢(mèng)之旅【數(shù)據(jù)結(jié)構(gòu)篇】——詳解小白如何使用C語(yǔ)言實(shí)現(xiàn)堆數(shù)據(jù)結(jié)構(gòu)

    ? ? ??博客昵稱(chēng):博客小夢(mèng) ??最喜歡的座右銘:全神貫注的上吧!?。???作者簡(jiǎn)介:一名熱愛(ài)C/C++,算法等技術(shù)、喜愛(ài)運(yùn)動(dòng)、熱愛(ài)K歌、敢于追夢(mèng)的小博主! ??博主小留言:哈嘍! ??各位CSDN的uu們,我是你的博客好友小夢(mèng),希望我的文章可以給您帶來(lái)一定的幫助,話不

    2023年04月17日
    瀏覽(94)
  • Selenium:斷言,還能這樣

    Selenium:斷言,還能這樣

    在編寫(xiě)自動(dòng)化測(cè)試腳本時(shí),為了使“機(jī)器”去自動(dòng)辨識(shí)test case的執(zhí)行結(jié)果是True還是False,一般都需要在用例執(zhí)行過(guò)程中獲取一些信息,來(lái)判斷用例的執(zhí)行時(shí)成功還是失敗。 判斷成功失敗與否,就涉及到斷言。webdriver的斷言使用有三種模式: 操作(action)、輔助(accessors)、斷言

    2024年02月04日
    瀏覽(20)
  • 追夢(mèng)之旅【數(shù)據(jù)結(jié)構(gòu)篇】——詳解C語(yǔ)言動(dòng)態(tài)實(shí)現(xiàn)帶頭結(jié)點(diǎn)的雙向循環(huán)鏈表結(jié)構(gòu)

    追夢(mèng)之旅【數(shù)據(jù)結(jié)構(gòu)篇】——詳解C語(yǔ)言動(dòng)態(tài)實(shí)現(xiàn)帶頭結(jié)點(diǎn)的雙向循環(huán)鏈表結(jié)構(gòu)

    ? ? ??博客昵稱(chēng):博客小夢(mèng) ??最喜歡的座右銘:全神貫注的上吧!??! ??作者簡(jiǎn)介:一名熱愛(ài)C/C++,算法等技術(shù)、喜愛(ài)運(yùn)動(dòng)、熱愛(ài)K歌、敢于追夢(mèng)的小博主! ??博主小留言:哈嘍! ??各位CSDN的uu們,我是你的博客好友小夢(mèng),希望我的文章可以給您帶來(lái)一定的幫助,話不

    2024年01月17日
    瀏覽(108)
  • 【微信小程序】按鈕還能這樣用?

    【微信小程序】按鈕還能這樣用?

    目錄 ??button 按鈕的基本使用 ??各種神奇的按鈕 ?? button 按鈕的基本使用 按鈕組件 功能比 HTML 中的 button 按鈕豐富 通過(guò) open-type 屬性可以調(diào)用微信提供的各種功能(客服、轉(zhuǎn)發(fā)、獲取用戶(hù)授權(quán)、獲取用戶(hù)信息等) 通過(guò)type屬性指定按鈕顏色類(lèi)型 ? WXML: 注:后期會(huì)對(duì)按鈕添加

    2023年04月08日
    瀏覽(14)
  • 應(yīng)用不停服,平滑升級(jí)分庫(kù)分表還能這樣做

    應(yīng)用不停服,平滑升級(jí)分庫(kù)分表還能這樣做

    背景 分庫(kù)分表是大型互聯(lián)網(wǎng)應(yīng)用經(jīng)常采用的一種數(shù)據(jù)層優(yōu)化方案,常見(jiàn)的分庫(kù)分表中間件如 sharding-jdbc、mycat 都已經(jīng)比較成熟,基本上可以應(yīng)對(duì)我們一般的分庫(kù)分表需求。 做過(guò)分庫(kù)分表的同學(xué)應(yīng)該知道,在給業(yè)務(wù)系統(tǒng)做分庫(kù)分表改造過(guò)程中,難的不是如何使用這些組件進(jìn)行分

    2024年02月14日
    瀏覽(22)
  • Leetcode | 有效的括號(hào)、最長(zhǎng)有效括號(hào)

    Leetcode | 有效的括號(hào)、最長(zhǎng)有效括號(hào)

    給定一個(gè)只包括? \\\'(\\\' , \\\')\\\' , \\\'{\\\' , \\\'}\\\' , \\\'[\\\' , \\\']\\\' ?的字符串? s ?,判斷字符串是否有效。 有效字符串需滿(mǎn)足: 左括號(hào)必須用相同類(lèi)型的右括號(hào)閉合。 左括號(hào)必須以正確的順序閉合。 每個(gè)右括號(hào)都有一個(gè)對(duì)應(yīng)的相同類(lèi)型的左括號(hào)。 示例 1: 示例?2: 示例?3: 提示: 1

    2024年02月14日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包