首页 > 试题广场 >

堆栈的使用

[编程题]堆栈的使用
  • 热度指数:19628 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
    堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。其中 push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。(注:本题有多组输入,可以参考该网址:https://www.nowcoder.com/discuss/276

输入描述:
    对于每组测试数据,第一行是一个正整数 n(0 < n <= 10000)。而后的 n 行,每行的第一个字符可能是'P'或者'O'或者'A';如果是'P',后面还会跟着一个整数,表示把这个数据压入堆栈;如果是'O',表示将栈顶的值 pop 出来,如果堆栈中没有元素时,忽略本次操作;如果是'A',表示询问当前栈顶的值,如果当时栈为空,则输出'E'。堆栈开始为空。


输出描述:
    对于每组测试数据,根据其中的命令字符来处理堆栈;并对所有的'A'操作,输出当时栈顶的值,每个占据一行,如果当时栈为空,则输出'E'。
示例1

输入

3
A
P 5
A
4
P 3
P 6
O
A

输出

E
5
3

python solution:


while True:
    try:
        a=int(input())
        if a==0:break
        stack=[]
        for i in range(a):
            string=input()
            if string.startswith("P"):
                stack.append(string.split()[-1])
            elif string=="A":
                print(stack[-1] if stack else "E")
            else:
                if stack:
                    stack.pop()
        print()

    except:
        break
发表于 2017-10-16 18:40:19 回复(0)
try:
    while 1:
        Stack = []
        N = input()
        if N == 0:
            break
        for i in xrange(N):
            a = raw_input().split()
            if a[0] == 'O' and len(Stack) != 0:
                Stack.pop()
            elif a[0] == 'A':
                if len(Stack) == 0:
                    print 'E'
                else:
                    print Stack[-1]
            elif a[0] == 'P':
                Stack.append(a[1])
        print ''            
except:
    pass

发表于 2016-12-26 12:58:51 回复(0)

问题信息

难度:
2条回答 8222浏览

热门推荐

通过挑战的用户

查看代码