06_栈和队列转换

栈和队列转换

1 两个栈实现一个队列

在这里插入图片描述

#include"Stack.h"
typedef int ELEM_TYPE;
//设计我们需要的那个结构体:two_stack_to_queue
typedef struct TSTQueue
{
	Stack s1;//每次入队的时候从给栈s1入栈
	Stack s2;//出队的时候,如果栈s2不空,则s2出栈,
			 //若栈s2为空,则将栈s1保存的数据导入到栈s2中,再从栈s2中出栈
}TSTQueue, * PTSTQueue;

//初始化
void my_Init_Queue(PTSTQueue pq);

//入队 push
bool my_Push(PTSTQueue pq, ELEM_TYPE val);

//出队 pop 需要删除操作
bool my_Pop(PTSTQueue pq, ELEM_TYPE* rtval);

//top  获取队头元素值, 不需要删除操作
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 两个队列实现一个栈

在这里插入图片描述

//设计我们需要的那个结构体:two_queue_to_stack
typedef struct TQTStack
{
	Queue q1;//队列1
	Queue q2;//队列2
}TQTStack, * PTQTStack;


//初始化
void my_Init_stack(PTQTStack ptq);

//入栈(或者叫压栈 push)
bool my_Push(PTQTStack ptq, ELEM_TYPE val);

//出栈(或者叫弹栈 pop(获取顶部数据,并且删除))//rtval是一个输出参数(C语言讲到)
bool my_Pop(PTQTStack ptq, ELEM_TYPE* rtval);

//获取顶部元素值 top(获取顶部数据)
bool my_Top(PTQTStack ptq, ELEM_TYPE* rtval);

//获取其有效数据个数
int my_Get_length(PTQTStack ptq);

//判空
bool my_IsEmpty(PTQTStack ptq);

//判满
bool my_IsFull(PTQTStack ptq);

扩容
//static void my_Inc(PTQTStack ptq);

//清空   一间房住了一户人  清空相当于把人赶出去
void my_Clear(PTQTStack ptq);

//销毁  一间房住了一户人  销毁相当于把人赶出去还把房烧了
void my_Destroy(PTQTStack ptq);

//打印
void my_Show(PTQTStack ptq);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值