在這裡我們先說明一下,我們在此**中用到的棧和佇列都是stl庫中實現的
思路:兩個棧,stark1和stark2,將stark1作為儲存空間,stark2作為零時快取區。入隊時,將入隊元素全部壓入stark1中即可。出隊時,將stark1中的元素全部pop出來壓入stark2中,然後在全部pop出來就,
下面來看一下**:
class queue
int pop()
int a=0;
if (s2.empty())
}a = s2.top();
s2.pop();
return a;
}private:
std::stacks1;
std::stacks2;
};int main()
for (int i = 0; i < 10; i++)
cout << endl;
return 0;
}
思路:兩個佇列,queue1和queue2,入隊時,將所有元素都壓入queue1中即可。出隊時,將queue1中的元素除了隊尾元素之外的所有元素全部壓入queue2中,然出將queue1中剩餘的乙個元素出隊,在將queue2中所有元素放入queue1中,重複上面的操作。
**示例如下:
class stark
int pop()
int a;
while (!q2.empty())
while (q1.size() > 1)
a = q1.front();
while (!q2.empty())
return a;
}private:
std::queueq1;
std::queueq2;
};int main()
for (int i = 0; i < 10; i++)
cout << endl;
return 0;
}
以上就是兩個棧實現乙個佇列和兩個佇列實現乙個棧,希望能對大家有所幫助! python兩個佇列實現乙個棧和兩個棧實現乙個佇列
棧 先進後出 佇列 先進先出 思路兩個棧實現乙個佇列 思路 兩個棧 都是先進後出 push新增資料的時候,將data資料push到stack1 中,pop資料的時候,先判斷stack2種是否有資料 如果有資料的話,直接pop stack2中的資料 因為pop是直接彈出最後乙個資料 如果stack2中...
兩個棧實現乙個佇列和兩個佇列實現乙個棧
stack 後進先出 lifo 是在表的一端進行插入或刪除運算的線性表,我們把插入 刪除的這一端稱為棧頂 top 另一端稱為棧底 bottom e push e item 把元素壓入棧頂並返回此元素 e pop 移除棧頂元素並返回此元素 e peek 檢視棧頂元素而不移除它 boolean empt...
兩個棧實現乙個佇列和兩個佇列實現乙個棧
棧的特性 先進後出 filo 佇列的特性 先進先出 fifo 1 兩個棧實現乙個佇列 1 思路 入棧時,直接壓入棧1中 如果棧1滿了,判斷棧2是否為空,若為空,則將棧1元素全部倒入棧2,再入棧 若棧2不為空,則不能再入元素 出棧時,判斷棧2是否為空,若棧為空,則將棧1中的元素倒入棧2,否則直接彈出棧...