在写队的实现是,忽然想到了栈,试试用栈实现队列。。。
由于水平有限,如有错误或者可以优化的地方,请指教。。。
栈的实现在这就不多说了,主要看看模拟队的函数。
#include <stdio.h>
#include <stdlib.h>
#include "stack_to_queue.h"
/栈转队--->一个栈负责进,一个负责出栈,第一个进栈的最终第一个出栈。。。
void push_to_queue( dseq_stack *s1, dseq_stack *s2, int k)
{
push_stack(s1, k);
}
int pop_to_queue(dseq_stack *s1, dseq_stack *s2)
{
int tmp;
int buff;
if (s1==NULL)
{
exit(-1);
}
if (s2==NULL)
{
exit(-1);
}
while(!is_empty(s1))
{
pop_stack(s1,&tmp);
push_stack(s2, tmp);
}
while(!is_empty(s2) )
{
if(is_empty(s2) )
{
printf("Empty!\n");
}
pop_stack(s2,&buff);
printf("%d ",buff);
}
return 0;
}
int main()
{
dseq_stack q1;
dseq_stack q2;
init_stack(&q1);
init_stack(&q2);
push_stack(&q1,2);
push_stack(&q1,4);
push_stack(&q1,8);
push_to_queue(&q1,&q2,3);
pop_to_queue(&q1,&q2);
return 0;
}