python的堆栈stack和队列queue

一、python的堆栈遵守:先进后出的原则。

stack = []

def pushit():
    stack.append(input('Enter new string:').strip())

def popit():
    if len(stack) == 0:
        print('Cannot pop from an empty stack!')
    else:
        print('Removed [',stack.pop(),']')

def viewstack():
    print(stack) #calls str() internally
CMDs = {'u':pushit,'o':popit,'v':viewstack}

def showmenu():
    pr = """
        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:"""
    while True:
        while True:
            try:
                choice = input(pr).strip()[0].lower()
            except (EOFError,KeyboardInterrupt,IndexError):
                choice = 'q'

            print('\nYou picked:[%s]' % choice)

            if choice not in 'uovq':
                print('Invalid option,try again')
            else:
                break

        if choice == 'q':
            break;
        CMDs[choice]()

if __name__ == '__main__':
    showmenu()

运行结果:

p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:u

You picked:[u]
Enter new string:1

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:u

You picked:[u]
Enter new string:2

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:u

You picked:[u]
Enter new string:3

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:u

You picked:[u]
Enter new string:4

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:u

You picked:[u]
Enter new string:5

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:u

You picked:[u]
Enter new string:6

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:p

You picked:[p]
Invalid option,try again

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:o

You picked:[o]
Removed [ 6 ]

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:o

You picked:[o]
Removed [ 5 ]

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:o

You picked:[o]
Removed [ 4 ]

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:o

You picked:[o]
Removed [ 3 ]

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:o

You picked:[o]
Removed [ 2 ]

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:o

You picked:[o]
Removed [ 1 ]

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:o

You picked:[o]
Cannot pop from an empty stack!

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:v

You picked:[v]
[]

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:v

You picked:[v]
[]

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:u

You picked:[u]
Enter new string:1

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:u

You picked:[u]
Enter new string:2

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:u

You picked:[u]
Enter new string:3

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:u

You picked:[u]
Enter new string:4

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:u

You picked:[u]
Enter new string:5

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:u

You picked:[u]
Enter new string:6

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:u

You picked:[u]
Enter new string:7

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:u

You picked:[u]
Enter new string:8

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:u

You picked:[u]
Enter new string:9

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:v

You picked:[v]
['1', '2', '3', '4', '5', '6', '7', '8', '9']

        p(U)sh
        p(O)p
        (V)iew
        (Q)uit
        Enter choice:q

You picked:[q]

二、队列遵守:先进先出的原则。
 

queue = []

def enQ():
    queue.append(input('Enter new string:').strip())

def deQ():
    if len(queue) == 0:
        print('Cannot pop from an empty queue!')
    else:
        print('Removed [',queue.pop(0),']')

def viewQ():
    print (queue) #calls str() internally

CMDs = {'e':enQ,'d':deQ,'v':viewQ}

def showmenu():
    pr = """
        (E)nqueue
        (D)equeue
        (V)iew
        (Q)uit
        Enter choice:"""

    while True:
        while True:
            try:
                choice = input(pr).strip()[0].lower()
            except (EOFError,KeyboardInterrupt,IndexError):
                choice = 'q'
            print('\nYou picked:[%s]' % choice)

            if choice not in 'devq':
                print('Invalid option,try again')
            else:
                break

        if choice == 'q':
            break
        CMDs[choice]()

if __name__ == '__main__':
    showmenu()

 

结果:

(E)nqueue
        (D)equeue
        (V)iew
        (Q)uit
        Enter choice:e

You picked:[e]
Enter new string:12

        (E)nqueue
        (D)equeue
        (V)iew
        (Q)uit
        Enter choice:e

You picked:[e]
Enter new string:23

        (E)nqueue
        (D)equeue
        (V)iew
        (Q)uit
        Enter choice:e

You picked:[e]
Enter new string:34

        (E)nqueue
        (D)equeue
        (V)iew
        (Q)uit
        Enter choice:e

You picked:[e]
Enter new string:45

        (E)nqueue
        (D)equeue
        (V)iew
        (Q)uit
        Enter choice:e

You picked:[e]
Enter new string:56

        (E)nqueue
        (D)equeue
        (V)iew
        (Q)uit
        Enter choice:v

You picked:[v]
['12', '23', '34', '45', '56']

        (E)nqueue
        (D)equeue
        (V)iew
        (Q)uit
        Enter choice:d

You picked:[d]
Removed [ 12 ]

        (E)nqueue
        (D)equeue
        (V)iew
        (Q)uit
        Enter choice:v

You picked:[v]
['23', '34', '45', '56']


You picked:[q]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值