需要有关弹出和推送操作的帮助

时间:2017-08-23 22:08:17

标签: stack pop

我正在攻读Microsoft考试,其中一个准备问题如下:

您有一个包含整数值的堆栈。这些值按以下顺序压入堆栈:2,4,6,8。 执行以下操作序列:

流行音乐, 推3, 流行, 推4, 推6, 推7, 流行, 流行, 流行,

执行这些操作后,top元素的值是多少?

一个。 2

B中。 3

℃。 6

d。 7

正确答案:B

为什么B是正确的答案?

2 个答案:

答案 0 :(得分:3)

堆栈是LIFO(后进先出)结构。 A" Pop"删除你放在它上面的最后一件事。

2 4 6 8
Pop
2 4 6
Push 3
2 4 6 3
Pop
2 4 6
Push 4
2 4 6 4
Push 6
2 4 6 4 6
Push 7
2 4 6 4 6 7
Pop
2 4 6 4 6
Pop
2 4 6 4
Pop
2 4 6

对我来说,6位于最后的 top (意味着将弹出的下一个元素),所以C将是正确的答案

答案 1 :(得分:0)

也同意答案...检查代码

namespace StackTest
{
    class Program
    {
        static void Main(string[] args)
        { 
            Stack st = new Stack(); 
            // Starting
            st.Push(2);
            st.Push(4);
            st.Push(6);
            st.Push(8);
            // Showing state 
            ShowStack(st,"Contenido inicial");
            //Pop, Push 3, Pop, Push 4, Push 6, Push 7, Pop, Pop, Pop,
            st.Pop();
            ShowStack(st, "Quitar uno");
            st.Push(3);
            ShowStack(st, "Agregado 3");
            st.Pop();
            ShowStack(st, "Quitar uno");
            st.Push(4);
            ShowStack(st, "Agregado 4");
            st.Push(6);
            ShowStack(st, "Agregado 6");
            st.Push(7);
            ShowStack(st, "Agregado 7");
            st.Pop();
            st.Pop();
            st.Pop();
            ShowStack(st, "Quitar tres");
            ShowStack(st,"Situacion Final");   
            Console.ReadKey();
            // 2, 4 , 6 , 8
        }
        private static void ShowStack(Stack st,string message)
        {
            Console.WriteLine(message);
            foreach (var item in st)
            {
                Console.WriteLine(item.ToString());
            }
            Console.WriteLine("-------------------");
        }
    }
}