c語言倆個棧實現乙個佇列

2021-07-30 20:12:05 字數 1540 閱讀 6538

思路,現在設有倆個棧s1,s2。完成乙個佇列。

入隊時,資料進入棧s1。

出隊時檢查s2棧是否為空,為空則將s1出棧,出棧資料依次入棧s2。完成乙個s1全部出棧後,s2出棧既是此時的出隊操作。

如果s2不為空,那s2直接出棧。如果s2,s1都為空,此時隊列為空,無法執行出隊操作。**如下。

/**

*@filename seqstack.c

*@author haohaibo

*@data 2017/4/15

*@brief 倆個棧實現乙個佇列

*/#include #include #include #define n 100

typedef int datatype_t;

typedef struct seqstack_t;

typedef struct stackqueue_psq_t;

/** *@brief 建立乙個空的棧

*/seqstack_t *seqstack_creat()

bzero(s,sizeof(seqstack_t));

s->top=-1;

} /**

*@brief 清空棧

*/void seqstack_clear(seqstack_t *s)

/** *@brief 棧滿

*/datatype_t seqstack_full(seqstack_t *s)

else

return (datatype_t)0;

}/**

*@brief 棧空

*/datatype_t seqstack_empty(seqstack_t *s)

else

return (datatype_t)0;

}/**

*@brief 入棧

*/datatype_t seqstack_insert(seqstack_t *s,datatype_t value)

/** *@brief 出棧

*/datatype_t seqstack_out(seqstack_t *s)

/** *@brief 列印棧資料

*/datatype_t seqstack_show(seqstack_t *s)

/** *@brief 建立乙個空棧佇列

*/sq_t *stackqueue_create()

//sq->front->top=sq->real->top=-1;

return sq;

}/**

*@brief 入隊

*/int push(sq_t *sq,int value)

/** *@brief 出隊

*/datatype_t pop(sq_t *sq)

} return seqstack_out(sq->front);

}/**

*@brief 列印佇列

*/void stackqueue_show(sq_t *sq)

int main(void)

用倆個棧實現佇列

棧 佇列 一 題目 感謝 提供的題目 用倆個棧實現佇列。某佇列的宣告如下 templateclass cqueue cqueue void deletehead remove a element from head private stackm stack in stackm stack out 分...

用倆個棧實現佇列

思路 棧是先進後出的,佇列是先進先出的,所以要想讓先壓進棧的元素先出來,只通過乙個棧是實現不了的,但我們可以通過將棧1的資料取出再壓入棧2中,這樣在棧1底部的 也就是先壓棧的 資料就會到棧2的頂部,再將其取出,就可以實現佇列先進先出了。include include include using na...

兩個佇列實現乙個棧(C語言)

本題的思路是先建立queue1和queue2,入棧時直接向queue1里入佇列,出棧時需要先從queue1中出佇列的同時把數依次進入queue2,直到queue1中到最後乙個數為止,然後將queue1中的數出佇列,再將queue2中的數倒回queue1,這樣就實現了乙個棧。實現 如下 兩個佇列實現乙...