使用 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

的上下文中才有意义