栈和队列转换
1 两个栈实现一个队列
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a5bb731cd81ef6de10e340a41c84ad0c.png)
#include"Stack.h"
typedef int ELEM_TYPE;
typedef struct TSTQueue
{
Stack s1;
Stack s2;
}TSTQueue, * PTSTQueue;
void my_Init_Queue(PTSTQueue pq);
bool my_Push(PTSTQueue pq, ELEM_TYPE val);
bool my_Pop(PTSTQueue pq, ELEM_TYPE* rtval);
bool my_Top(PTSTQueue pq, ELEM_TYPE* rtval);
int my_Get_length(PTSTQueue pq);
bool my_IsEmpty(PTSTQueue pq);
bool my_IsFull(PTSTQueue pq);
void my_Clear(PTSTQueue pq);
void my_Destroy(PTSTQueue pq);
void my_Show(PTSTQueue pq);
2 两个队列实现一个栈
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7a43897553028c2ae4565418aa023c90.png)
typedef struct TQTStack
{
Queue q1;
Queue q2;
}TQTStack, * PTQTStack;
void my_Init_stack(PTQTStack ptq);
bool my_Push(PTQTStack ptq, ELEM_TYPE val);
bool my_Pop(PTQTStack ptq, ELEM_TYPE* rtval);
bool my_Top(PTQTStack ptq, ELEM_TYPE* rtval);
int my_Get_length(PTQTStack ptq);
bool my_IsEmpty(PTQTStack ptq);
bool my_IsFull(PTQTStack ptq);
void my_Clear(PTQTStack ptq);
void my_Destroy(PTQTStack ptq);
void my_Show(PTQTStack ptq);