)示例 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...