栈和队列面试题(C语言版)

本文探讨了如何用C语言解决面试中关于栈和队列的问题,包括判断出入栈的合法性、使用两个栈模拟队列、使用两个队列模拟栈以及如何在一个数组中实现两个栈的操作。通过这些实现,可以深入了解栈和队列的特性及转换技巧。
摘要由CSDN通过智能技术生成

1.判断出入栈的合法性

https://blog.csdn.net/Payshent/article/details/69951411

2.使用两个栈实现一个队列

思想:1.栈1中的所有数据弹到栈2中(栈2为空栈)

           2.再从栈2弹出所有数据,则可出现队列的效果

(默认压数据压到队列1中,从队列2出数据)

typedef struct Stack
{
	DataType _array[MAX_SIZE];          //数组
	DataType top;			    //栈顶
	int size;			    //容量
}Stack;
void StackInit(Stack* p)
{
	p->size = 0;
	p->top = -1;
}

void StackPush(Stack* p,DataType x)
{
	if (p->size < MAX_SIZE)
	{
		p->_array[++p->top] = x;
		p->size++;
	}
	else
	{
		printf("栈满\n");
	}
}
DataType StackPop(Stack* p)
{
	assert(p);
	p->top--;
	p->size--;
	return p->_array[p->top + 1];
}

void test1(Stack* s,Stack* s1)
{
	if (StackEmpty(s1) == 0)                          //判断s1是否为空
	{
		while (s->top >=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值