先看分析
来看代码,因为代码量巨大,其中包括两个头文件,两个实现函数 , 这块就写一个两个栈实现按一个队列的头文件以及函数名,填补代码不难的,有需要的话,我在评论区发出来:
这部分资源我已经在我主页资源那块上传 有需要直接去下载即可:
two_stack_to_queue:
#pragma once
#include "stack.h" //这是栈的头函数
typedef struct TSTqueue
{
Stack s1;
Stack s2;
}TSTqueue, *PTSTqueue;
//增删改查
//初始化
void my_Init_queue(PTSTqueue pq);//该函数中调用了stack.h中的初始化函数 记得传参的时候(&pq->s1或者是&pq->s2)
//入队
bool my_Push(PTSTqueue pq, ELEM_TYPE val); //ELEM_TYPE在stack.h中是个宏 替代int
//出队(如果出队操作成功,则还要返回出队的值)
bool my_Pop(PTSTqueue pq, ELEM_TYPE *rtval); //rtval是需要返回出去的值
//获取队头元素值(如果Top函数执行成功,则还要返回队头的值)
bool my_Top(PTSTqueue pq, ELEM_TYPE *rtval);
//获取有效值个数
int my_Get_length(PTSTqueue pq);
//判空
bool my_IsEmpty(PTSTqueue pq);
//清空
void my_Clear(PTSTqueue pq);
//销毁
void my_Destroy(PTSTqueue pq);
//打印
void my_Show(PTSTqueue pq);
两个栈实现一个队列 那么两个队列实现一个栈怎么实现呢?我来给个思维图
“”