放置&从对象中删除元素(堆栈)

时间:2010-04-04 13:32:38

标签: c#

初始化2个堆栈对象:

Stack s1 = new Stack(), s2 = new Stack();

s1 = 0 0 0 0 0 0 0 0 0(10个元素的数组,开头为空)top:0

        const int Rows = 10;
    int[] Table = new int[Rows];

    public void TableStack(int[] Table)
    {
        for (int i=0; i < Table.Length; i++)
        {
        }
    }

我的问题是我如何将一个元素放在堆栈上(推送)或从堆栈中取出一个元素(pop)如下:
  的推送:

s1.Push(5);   // s1 = 5 0 0 0 0 0 0 0 0 0   (top:1)
s1.Push(9);   // s1 = 5 9 0 0 0 0 0 0 0 0   (top:2)

弹出:

int number = s1.Pop();  // s1 = 5 0 0 0 0 0 0 0 0 0 0 (top:1) 9 got removed

我必须使用get&amp;设置,如果是这样,我怎么用数组实现这个? 不确定该用于什么。 任何提示高度赞赏。

程序使用以下驱动程序来测试Stack类(无法更改或修改):

        public void ExecuteProgram()
    {
        Console.Title = "StackDemo";
        Stack s1 = new Stack(), s2 = new Stack();
        ShowStack(s1, "s1");
        ShowStack(s2, "s2");
        Console.WriteLine();
        int getal = TryPop(s1);
        ShowStack(s1, "s1");
        TryPush(s2, 17);
        ShowStack(s2, "s2");
        TryPush(s2, -8);
        ShowStack(s2, "s2");
        TryPush(s2, 59);
        ShowStack(s2, "s2");
        Console.WriteLine();
        for (int i = 1; i <= 3; i++)
        {
            TryPush(s1, 2 * i);
            ShowStack(s1, "s1");
        }
        Console.WriteLine();
        for (int i = 1; i <= 3; i++)
        {
            TryPush(s2, i * i);
            ShowStack(s2, "s2");
        }
        Console.WriteLine();
        for (int i = 1; i <= 6; i++)
        {
            getal = TryPop(s2);
            //use number

            ShowStack(s2, "s2");
        }
    }/*ExecuteProgram*/

问候。

3 个答案:

答案 0 :(得分:2)

您可以使用内置的Stack<T>,它会为您提供推,弹,窥视等。

答案 1 :(得分:1)

Stack对象上有Push和Pop方法。只需按照您的要求调用s1.Push和s1.Pop。

答案 2 :(得分:0)

提示:您需要在Stack类中维护内部数组中最顶层元素的索引。

我不确定get / set是什么意思,但是很有可能,你在这里不需要它(特别是如果你真的是指属性)。