1.判断出入栈的合法性
https://blog.youkuaiyun.com/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 >= 0)
{
s1->_array[++s1->top] = StackPop(s); //s弹出一个元素

本文探讨了如何用C语言解决面试中关于栈和队列的问题,包括判断出入栈的合法性、使用两个栈模拟队列、使用两个队列模拟栈以及如何在一个数组中实现两个栈的操作。通过这些实现,可以深入了解栈和队列的特性及转换技巧。
最低0.47元/天 解锁文章
914

被折叠的 条评论
为什么被折叠?



