使用 C 从一个堆栈中弹出一个值并推送到另一个
Popping a value from one stack and Pushing to another using C
我目前正在学习一些 C 语言并创建了一个基本的 connect 4 游戏。我现在正在尝试实现一个 undo/redo 函数,我已经使用数组创建了一个堆栈,基本上保存了每个玩家所做的每一步。我可以将移动和弹出移动移入和移出堆栈,因此我可以开始工作的撤消部分,重做部分是我挣扎的地方。我想知道我是否可以创建一个临时堆栈,当我从我的主堆栈弹出时我可以推送到这个临时堆栈?在我的脑海里,这将允许我重做动作。
我找不到任何像样的例子来很好地解释这一点,如果有人创造了类似的东西,我只是在寻找正确方向的一点?另外,如果有更有效的方法,我也完全愿意接受。
提前致谢
<>
void push2(int y)
{
if(top2 == MAX_SIZE2 -1) { // stack full case.
printf("Error: stack is full\n");
return;
}
top2 = top2 + 1;
stack2[top2] = y;
//A[++top] = y;
}
// Pop operation to remove an element from top of first stack.
void pop()
{
push2(top); //add to second stack
if(top == -1) { // If stack is empty, throw error.
printf("Error: No items to pop\n");
return;
}
//x = stack[top];
//top = top - 1;
top--;
}
我认为将 push2(top);
更改为 push2(stack[top]);
可能会有所帮助。
您的 top
变量似乎是一个索引变量,因此它只在 stack
的上下文中才有意义
我目前正在学习一些 C 语言并创建了一个基本的 connect 4 游戏。我现在正在尝试实现一个 undo/redo 函数,我已经使用数组创建了一个堆栈,基本上保存了每个玩家所做的每一步。我可以将移动和弹出移动移入和移出堆栈,因此我可以开始工作的撤消部分,重做部分是我挣扎的地方。我想知道我是否可以创建一个临时堆栈,当我从我的主堆栈弹出时我可以推送到这个临时堆栈?在我的脑海里,这将允许我重做动作。
我找不到任何像样的例子来很好地解释这一点,如果有人创造了类似的东西,我只是在寻找正确方向的一点?另外,如果有更有效的方法,我也完全愿意接受。
提前致谢
<>
void push2(int y)
{
if(top2 == MAX_SIZE2 -1) { // stack full case.
printf("Error: stack is full\n");
return;
}
top2 = top2 + 1;
stack2[top2] = y;
//A[++top] = y;
}
// Pop operation to remove an element from top of first stack.
void pop()
{
push2(top); //add to second stack
if(top == -1) { // If stack is empty, throw error.
printf("Error: No items to pop\n");
return;
}
//x = stack[top];
//top = top - 1;
top--;
}
我认为将 push2(top);
更改为 push2(stack[top]);
可能会有所帮助。
您的 top
变量似乎是一个索引变量,因此它只在 stack