从元组中取出每个方法调用的元素

Sef*_*Sef 2 c# stack

我有一个问题,考虑一个刺激堆栈的程序(不使用任何内置的堆栈功能等).

stack2= 1 2 3 4 5 //single dimension array of 5 elements
Run Code Online (Sandbox Code Playgroud)

通过调用该方法pop,堆栈应如下所示,基本上每次重新调用堆栈时都会关闭一个元素.

stack2= 1 2 3 4 0  
stack2= 1 2 3 0 0  
stack2= 1 2 0 0 0  
stack2= 1 0 0 0 0  
stack2= 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

for (int i = 1; i <= 6; i++)
{
    number= TryPop(s2);
    //use number
    ShowStack(s2, "s2");
}

public void Push(int g)
{
    if (top == Max)
    {
        throw new Exception("Stack overflow...");
    }
    else
    {
        tabel[top] = g;
        top++;
    }
}/*Push*/
Run Code Online (Sandbox Code Playgroud)

我已经有了用数字填充我的数组的代码(通过push方法).pop方法应取最后一个值并将其置于0,然后调用下一个堆栈并将以下内容置于0(如上面的stack2中所示).

跟踪顶部索引的当前pop方法(0个元素= 0顶部,1个元素= 1顶部等...)已经包含下溢警告,如果该值为0或更低(这是正确的).

public int Pop()
{
    if(top <= 0)
    {
        throw new Exception("Stack underflow...");
    }
    else
    {
        for (int j = tabel.Length - 1; j >= 0; j--)  
        {
            //...Really not sure what to do here.
        }
    }

    return number; 

}/*Pop*/
Run Code Online (Sandbox Code Playgroud)

因为在另一个类中我已经有一个循环(for上面显示的循环),模拟s2堆栈的6倍.(第一个堆栈:1 2 3 4 0,第二个堆栈1 2 3 0 0,依此类推.)我每次如何关闭一个元素?我要么将整个显示设置为0,要么将0设置在错误的位置/出于索引错误.

编辑:工作流程方法:

public int Pop()
{
    if(top <= 0)
    {
        throw new Exception("Stack underflow...");
    }

    top--;
    tabel[top] = 0;
    number = tabel[top];

    return number;
}/*Pop*/
Run Code Online (Sandbox Code Playgroud)

dtb*_*dtb 8

要实现堆栈,您需要一个数组和一个指向堆栈顶部的"指针".

empty       _ _ _ _ _
            ?
Run Code Online (Sandbox Code Playgroud)

在您的代码中,table是数组并且top是指针(作为数组索引).

要将项目推送到堆栈,请将项目放在堆栈顶部并将指针前进一个:

push 1      1 _ _ _ _
              ?

push 2      1 2 _ _ _
                ?

push 3      1 2 3 _ _
                  ?
Run Code Online (Sandbox Code Playgroud)

这就是你的代码已经做的事情:

table[top] = g;    // insert `g` at `top` into `table`
top++;             // advance `top` by one
Run Code Online (Sandbox Code Playgroud)

流行的

要弹出一个项目,将指针向后移动一步并返回+删除顶部的项目:

pop 3       1 2 _ _ _
                ?

pop 2       1 _ _ _ _
              ?

pop 1       _ _ _ _ _
            ?
Run Code Online (Sandbox Code Playgroud)

现在尝试将Push解决方案转换为反向,如下所示!