用兩個棧來實現乙個佇列,完成佇列的push和pop操作。 佇列中的元素為int型別。
typedef struct squeuesqueue;
void queuepush(squeue *ps, int data)
void queuepop(squeue *ps)
} stackpop(p2);
}
假設先將元素都壓入stack1,如果將stack1中的元素逐個彈出並壓入stack2,則元素在stack2中的順序正好和原來在stack1中的順序相反,也就是stack2中的棧頂元素就是佇列中先入的元素,然後彈出stack2的棧頂元素,就實現了佇列的「先入先出」的特點void stackinit(stack *ps)
void stackpush(stack *ps,int data)
void stackpop(stack *ps)
//1為空,0為非空
int stackisempty(stack *ps)
int stacktop(stack *ps)
當stack2不為空時,在stack2中的棧頂元素是最先進如佇列的元素,可以彈出;當stack2為空時,需將stack1中的元素全部彈出並壓入stack2.
劍指offer 用兩個棧實現佇列
華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 9 30 題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解析 我的思路是用乙個棧來儲存資料,入隊的話直接在這個棧上入棧,出隊的話借助輔助棧,對輔助棧入棧,然後取出頭元素,然後把輔助棧上的元素在...
用兩個棧實現佇列《劍指offer
題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解題思路 將元素入隊時壓入乙個棧中,隨後通過另乙個棧出隊 1 使用stack容器定義兩個棧 stack stack1 stack stack2 2 入隊 stack1.push node node為入隊元素 ...
劍指offer 用兩個棧實現佇列
記錄 劍指offer 上的演算法題。題目描述如下 佇列的宣告如下 template class cqueue cqueue t deletehead bool empty private stack stack1 stack stack2 實現的 如下 templatet stack1.push n...