用兩棧來實現佇列功能
首先棧的**
檔名 stack_list.h
#include
#include 「stack_list.h」
node* creat_node(type data) //建立乙個節點
// 建立
stack* creat_stack(void)
// 銷毀
void destory_stack(stack* stack)
// 棧空
bool empty_stack(stack* stack)
// 入棧
void push_stack(stack* stack,type data)
// 出棧
bool pop_stack(stack* stack)
// 棧頂
type* top_stack(stack* stack)
然後是棧和佇列的
#include
#include 「stack_list.h」
typedef struct queue
queue;
// 建立
queue* creat_queue(void)
// 銷毀
void destory_queue(queue* queue)
// 隊空
bool empty_queue(queue* queue)
// 入隊
void push_queue(queue* queue,type data)
// 出隊
bool pop_queue(queue* queue,type* p)
// 如果s2裡有元素,直接從s2裡面出隊
// 如果從s1裡提出元素到s2,則必須全部提出
if(empty_stack(queue->s2))
}*p = *top_stack(queue->s2);
return pop_stack(queue->s2);
}int main()
for(int i=0; i<5; i++)
printf("--------------------------\n");
for(int i=10; i<20; i++)
for(int i=0; i<15; i++)
用兩個棧來實現佇列
用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。利用兩個棧都是後進先出的特性,可以實現負負得正的效果。即每次入棧都進入stack1,每次出棧先在stack2出棧,若stack2為空,則將stack1的元素全部出棧,按序入棧stack2,然後stack2出棧乙個元素即...
用兩個棧實現佇列 及 兩個佇列實現棧功能
最近筆試遇到這個問題,感覺蠻有意思的,分析看看 一 問 用兩個棧實現乙個佇列的功能,要求給出演算法和思路 示意圖 答 設2個棧a,b,初始化為空 入隊 將新元素push入棧a 出隊 1 判斷棧b是否為空 2 如果不為空,則將棧a中所有元素依次pop出並push到棧b 3 將棧b的棧頂元素pop出 說...
兩個棧實現佇列的功能
分析 設定兩個棧s1 s2,一開始均為空。入隊 將新元素push入s1。出隊 1 判斷棧s2是否為空 2 如果s2為空,把s1中的所有元素全部pop出並且push到s2中,從s2中pop出棧頂元素即可出列 3 如果s2不為空,直接從s2中pop出棧頂元素即可出列 int enqueue int e ...