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

[鏈表OJ題 8] 用棧實現(xiàn)隊列,沒想到你小子的基礎這么好,這么快就做對了

這篇具有很好參考價值的文章主要介紹了[鏈表OJ題 8] 用棧實現(xiàn)隊列,沒想到你小子的基礎這么好,這么快就做對了。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

題目來源:

代碼實現(xiàn):

思路分析:

實現(xiàn)過程:


題目來源:

力扣 - 232.用棧實現(xiàn)隊列

題目描述:

[鏈表OJ題 8] 用棧實現(xiàn)隊列,沒想到你小子的基礎這么好,這么快就做對了

代碼實現(xiàn):

我們這里的棧已經(jīng)寫好了,如果對棧還不是很懂的可以看看這篇文章:CSDN - [數(shù)據(jù)結構 -- C語言] 棧(stack)

typedef int STDataType;
typedef struct Stack
{
	STDataType* a;
	int top;		// 棧頂
	int capacity;  // 容量 
}Stack;
// 初始化棧 
void StackInit(Stack* ps);
// 入棧 
void StackPush(Stack* ps, STDataType data);
// 出棧 
void StackPop(Stack* ps);
// 獲取棧頂元素 
STDataType StackTop(Stack* ps);
// 獲取棧中有效元素個數(shù) 
int StackSize(Stack* ps);
// 檢測棧是否為空,如果為空返回非零結果,如果不為空返回0 
int StackEmpty(Stack* ps);
// 銷毀棧 
void StackDestroy(Stack* ps);
// 初始化棧 
void StackInit(Stack* ps)
{
	assert(ps);

	ps->a = NULL;
	//ps->top = -1;//top 指棧頂數(shù)據(jù)
	ps->top = 0;//top 指棧頂數(shù)據(jù)的下一個位置
	ps->capacity = 0;
}
// 入棧 
void StackPush(Stack* ps, STDataType data)
{
	assert(ps);

	if (ps->capacity == ps->top)
	{
		int newcapacity = ps->capacity == 0 ? 4 : ps->capacity * 2;
		STDataType* tmp = (STDataType*)realloc(ps->a, sizeof(STDataType) * newcapacity);
		if (tmp == NULL)
		{
			perror("realloc fail:");
			return;
		}
		ps->a = tmp;
		ps->capacity = newcapacity;
	}

	ps->a[ps->top] = data;
	ps->top++;
}
// 出棧 
void StackPop(Stack* ps)
{
	assert(ps);
	assert(!StackEmpty(ps));

	ps->top--;
}
// 獲取棧頂元素 
STDataType StackTop(Stack* ps)
{
	assert(ps);
	assert(!StackEmpty(ps));

	return ps->a[ps->top-1];
}
// 獲取棧中有效元素個數(shù) 
int StackSize(Stack* ps)
{
	assert(ps);

	return ps->top;
}
// 檢測棧是否為空,如果為空返回非零結果,如果不為空返回0 
int StackEmpty(Stack* ps)
{
	assert(ps);

	if (0 == ps->top)
		return 1;
	else
		return 0;
}
// 銷毀棧 
void StackDestroy(Stack* ps)
{
	assert(ps);

	free(ps->a);
	ps->a = NULL;
	ps->capacity = 0;
	ps->top = 0;
}

typedef struct {
    Stack push;
    Stack pop;
} MyQueue;

MyQueue* myQueueCreate() {
    MyQueue* obj = (MyQueue*)malloc(sizeof(MyQueue));
    StackInit(&obj->push);
    StackInit(&obj->pop);

    return obj;
}

void myQueuePush(MyQueue* obj, int x) {
    StackPush(&obj->push, x);
}

int myQueuePop(MyQueue* obj) {
    int front = myQueuePeek(obj);
    StackPop(&obj->pop);
    return front;
}

int myQueuePeek(MyQueue* obj) {
    if(StackEmpty(&obj->pop))
    {
        while(!StackEmpty(&obj->push))
        {
            StackPush(&obj->pop, StackTop(&obj->push));
            StackPop(&obj->push);
        }
    }
    return StackTop(&obj->pop);
}

bool myQueueEmpty(MyQueue* obj) {
    return StackEmpty(&obj->push) && StackEmpty(&obj->pop);
}

void myQueueFree(MyQueue* obj) {
    StackDestroy(&obj->push);
    StackDestroy(&obj->pop);
}

思路分析:

我們知道隊列的特性:先入先出;棧的特性:先入后出。因此我們定義兩個棧,一個是入元素的棧(push棧),另一個是出元素的棧(pop棧)。當我們要入隊的時候就把元素直接入到 push棧中,出隊的時候先把 push棧 中的元素全部放入 pop棧 中,將 pop棧 的棧頂元素出棧就能實現(xiàn)隊列的特性。

此題的本質(zhì)是以棧的特性來實現(xiàn)隊列的特性。

[鏈表OJ題 8] 用棧實現(xiàn)隊列,沒想到你小子的基礎這么好,這么快就做對了

實現(xiàn)過程:

1、我們先將棧的所有接口都寫出來。然后我們創(chuàng)建兩個棧,一個是實現(xiàn)入隊功能的棧(push棧),另一個是實現(xiàn)出隊功能的棧(pop棧);

2、我們要實現(xiàn)入隊的時候,將元素入到 push棧 中,要出隊的時候先將 push棧 中的元素轉到 pop棧 中,然后出pop棧 這樣就可以實現(xiàn)出隊時出的是隊頭元素;

3、在出隊的時候我們先看 pop棧 中還有沒有元素,要是有元素我們直接出 pop棧 中的棧頂元素就可以,如果沒有就先將 push棧 中的元素轉到 pop棧 中;入隊的時候直接入到 push棧 中就可以。

對棧還不太明白的朋友可以參考代碼實現(xiàn)那部分的 的那篇文章。

[鏈表OJ題 8] 用棧實現(xiàn)隊列,沒想到你小子的基礎這么好,這么快就做對了

*** 本篇結束 ***文章來源地址http://www.zghlxwxcb.cn/news/detail-463136.html

到了這里,關于[鏈表OJ題 8] 用棧實現(xiàn)隊列,沒想到你小子的基礎這么好,這么快就做對了的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • python 爬蟲某東網(wǎng)商品信息 | 沒想到銷量最高的是

    python 爬蟲某東網(wǎng)商品信息 | 沒想到銷量最高的是

    哈嘍大家好,我是咸魚 好久沒更新 python 爬蟲相關的文章了,今天我們使用 selenium 模塊來簡單寫個爬蟲程序——爬取某東網(wǎng)商品信息 網(wǎng)址鏈接:https://www.jd.com/ 完整源碼在文章最后 我們需要找到網(wǎng)頁上元素的位置信息(xpth 路徑) 我們首先需要知道搜索框和搜索按鈕的位置

    2024年02月08日
    瀏覽(32)
  • 真沒想到?。o需服務器,五分鐘部署公眾號機器人

    真沒想到?。o需服務器,五分鐘部署公眾號機器人

    大家好,我是編程哥。一個尋求破圈,不斷淬煉自己的人,關注我一起進步。 目前各大模型都比較火,作為一名程序員,對大模型的了解也是蠢蠢欲動,尤其是對于機器人自動問答這一項。所以在朋友的推薦下,了解了一個無需服務器,快速搭建公眾號機器人的教程,現(xiàn)在分

    2024年02月03日
    瀏覽(22)
  • 沒想到,JDBC 驅(qū)動會偷偷修改 sql_mode 的會話值

    最近碰到一個 case,值得分享一下。 現(xiàn)象就是一個 update 操作,在 mysql 客戶端中執(zhí)行提示 warning,但在 java 程序中執(zhí)行卻又報錯。 update 語句中使用 STR_TO_DATE 函數(shù)將字符串轉換為日期時間格式。 但因為這個格式字符串 \\\'%Y-%m-%d %H:%i:%s\\\' 沒有對日期字符串中的毫秒部分 .0 進行解析

    2024年03月09日
    瀏覽(25)
  • 作為所有類的頂層父類,沒想到Object的魔力如此之大!

    作為所有類的頂層父類,沒想到Object的魔力如此之大!

    在上一篇博文中我們提到了Java面向?qū)ο蟮乃拇筇匦?,其中談及“抽象”特性時做了一個引子,引出今天的主人公Object,作為所有類的頂級父類,Object被視為是James.Gosling的哲學思考,它高度概括了事務的自然與社會行為。 跟進Object類的源碼中我們可以看到,類的注釋中對它做

    2024年02月01日
    瀏覽(20)
  • 云安全_什么是云,云計算的本質(zhì),沒想到一個Handler還有中高級幾種問法

    云安全_什么是云,云計算的本質(zhì),沒想到一個Handler還有中高級幾種問法

    是將計算機終端系統(tǒng)進行虛擬化,以達到桌面使用的安全性和靈活性??梢酝ㄟ^任何設備,在任何地點,任何時間通過網(wǎng)絡訪問屬于我們個人的桌面系統(tǒng)。 存儲虛擬化 是對存儲硬件資源進行抽象化表現(xiàn)。 網(wǎng)絡虛擬化 網(wǎng)絡虛擬化就是在一個物理網(wǎng)絡上模擬出多個邏輯網(wǎng)絡來。

    2024年04月13日
    瀏覽(25)
  • 5年測試經(jīng)驗怎么著我也能要個20K吧?沒想到被阿里P8問傻了

    都說金三銀四是跳槽漲薪季,我也是著急忙慌的準備簡歷—— 5年軟件測試經(jīng)驗,可獨立測試大型產(chǎn)品項目,熟悉項目測試流程…薪資要求?5年測試經(jīng)驗起碼能要個20K吧? 我加班肝了一頁半簡歷,投出去一周,面試電話倒是不少,自信滿滿去面試,現(xiàn)場被問了這么幾個問題—

    2024年02月08日
    瀏覽(19)
  • 5年測試經(jīng)驗怎么著我也能要個20K吧?沒想到被阿里P8問傻了····

    5年測試經(jīng)驗怎么著我也能要個20K吧?沒想到被阿里P8問傻了····

    都說金三銀四是跳槽漲薪季,我也是著急忙慌的準備簡歷—— 5年軟件測試經(jīng)驗,可獨立測試大型產(chǎn)品項目,熟悉項目測試流程…薪資要求?5年測試經(jīng)驗起碼能要個20K吧? 我加班肝了一頁半簡歷,投出去一周,面試電話倒是不少,自信滿滿去面試,現(xiàn)場被問了這么幾個問題—

    2024年02月08日
    瀏覽(21)
  • 棧和隊列OJ題:LeetCode--232.用棧實現(xiàn)隊列

    棧和隊列OJ題:LeetCode--232.用棧實現(xiàn)隊列

    朋友們、伙計們,我們又見面了,今天給大家?guī)淼氖荓eetCode--232.用棧實現(xiàn)隊列 數(shù) 據(jù) 結 構 專 欄:數(shù)據(jù)結構 個? ? 人? ?主? ? 頁 :stackY、 LeetCode 專? 欄 :LeetCode刷題訓練營 LeetCode--232.用棧實現(xiàn)隊列:https://leetcode.cn/problems/implement-queue-using-stacks/ 目錄 1.題目介紹 2.實例演示

    2024年02月05日
    瀏覽(25)
  • 數(shù)據(jù)結構刷題訓練:用棧實現(xiàn)隊列(力扣OJ)

    數(shù)據(jù)結構刷題訓練:用棧實現(xiàn)隊列(力扣OJ)

    目錄 前言 1. 題目:用棧實現(xiàn)隊列 2. 思路 3. 分析 ?3.1 定義 “ 隊列 ” ?3.2 創(chuàng)建隊列 3.3 入隊 ?3.4 隊頭數(shù)據(jù) ?3.5 出隊 ?3.6 判空和銷毀 4.題解 總結 ????????棧和隊列是數(shù)據(jù)結構中的兩個重要概念,它們在算法和程序設計中都有著廣泛的應用。本文將帶你深入了解如何使用

    2024年02月13日
    瀏覽(23)
  • 用隊列實現(xiàn)棧和用棧實現(xiàn)隊列

    用隊列實現(xiàn)棧和用棧實現(xiàn)隊列

    前面我們實現(xiàn)了棧和隊列,其實棧和隊列之間是可以相互實現(xiàn)的 下面我們來看一下 用 隊列實現(xiàn)棧 和 用棧實現(xiàn)隊列 使用兩個隊列實現(xiàn)一個后入先出(LIFO)的棧,并支持普通棧的全部四種操作(push、top、pop 和 empty) 實現(xiàn) MyStack 類: void push(int x) 將元素 x 壓入棧頂。 int pop

    2023年04月09日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包