leetcode 用兩個棧實現佇列

2021-10-14 06:50:33 字數 1455 閱讀 9236

)示例 1:

示例 2:

1.棧的特點:棧只能在棧頂進行入棧和出棧操作,同時遵循「先入後出」原則。

2.佇列的特點:佇列的一端用於入隊、另一端用於出隊;遵循「先進先出」;

3.用棧實現佇列的思路分析

兩個棧模擬實現乙個佇列,其中乙個棧用於入隊操作,另乙個棧用於出隊操作。

// 支援動態增長的棧

typedef int stdatatype;

typedef struct stack

stack;

//初始化棧

void stackinit(stack* st)

//入棧

void stackpush(stack* st,stdatatype x)

//入棧

st->_a[st->_top] = x;

st->_top++;

}//出棧

void stackpop(stack* st)

}//獲取棧頂元素

stdatatype stackhead(stack* st)

return -1;

}//判斷棧空

int stackempty(stack* st)

//銷毀棧

void stackdestory(stack* st)

typedef struct cqueue;

cqueue* cqueuecreate()

stackpush(&obj->pushstak,value);

}int cqueuedeletehead(cqueue* obj)

//判斷出隊棧是否為空,如果為空,將入隊棧元素入棧

if(stackempty(&obj->popstack))

}//棧頂元素出棧

int front = stackhead(&obj->popstack);

stackpop(&obj->popstack);

return front;

}void cqueuefree(cqueue* obj)

/** * your cqueue struct will be instantiated and called as such:

* cqueue* obj = cqueuecreate();

* int param_2 = cqueuedeletehead(obj);

* cqueuefree(obj);

*/

用兩個棧實現佇列(leetcode)

思路 因為棧只能使用push 和pop 方法。所以使用乙個棧作為佇列,另乙個作為輔助棧。佇列負責儲存元素,輔助棧用於在需要刪除佇列中元素時,將佇列中元素按照倒序存入輔助棧中,進行pop 方法,實現佇列的 先進先出 10 32 varcqueue function param value return...

LeetCode 用兩個棧實現佇列

部落格說明 介紹劍指 offer 09.用兩個棧實現佇列 題目 示例 1 輸入 3 輸出 null,null,3,1 示例 2 輸入 5 2 輸出 null,1,null,null,5,2 1 values 10000思路 根據棧先進後出的特性,我們每次往第乙個棧裡插入元素後,第乙個棧的底部元素是最...

用兩個棧實現佇列 用兩個佇列實現棧

劍指offer 面試題7 用兩個棧實現佇列。templateclass cqueue 我們試著用兩個棧來模擬佇列的操作,發現如下可行操作 完整 實現 面試題7 用兩個棧實現佇列 分別完成在隊尾插入結點和在隊頭刪除結點的功能。date 2014 06 27 include include includ...