Python列表操作——模拟实现栈和队列

1.实现栈:

stack=[]

def pushit():
    stack.append(raw_input('Enter New String:').strip())
def popit():
    if len(stack)==0:
        print 'can not pop anything from a empty stack'
    else:
        print 'Remove[',repr(stack.pop()),']'
def viewstack():
    print stack

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=raw_input(pr).strip().lower()
            except (EOFError,KeyboardInterrupt,IndexError):
                choice='q'
            print '\nYou picked:[%s]' %choice
            if choice  not in 'uovq':
                print'Invaild option,try again'
            else:
                break
        if choice=='q':
            break
        CMDs[choice]()
        


if __name__=='__main__':
    showmenu()

2.实现队列

queue=[]

def enQ():
    queue.append(raw_input('Please enter a new element:').strip())

def deQ():
    if len(queue)==0:
        print "Error: cannot pop anything from a empty queue"
    else:
        print 'Remove [',queue.pop(0),']'

def viewshow():
    print queue
CMDs={'e':enQ,'d':deQ,'v':viewshow}
def showmenu():
    pr='''
      (E)nQ
      (D)eQ
      (V)iewshow
      (Q)uit

      Enter your choice: 
    '''
    while True:
        while True:
            try:
                choice=raw_input(pr).strip()[0].lower()
            except (EOFError,KeyboardInterrupt,IndexError):
                choice='q'
            print 'You picked [%s]' % choice
            if choice not in 'edvq':
                print 'Invail option, Try again'
            else:
                break
        if choice=='q':
            break
        CMDs[choice]()
if __name__=='__main__':
    showmenu()

 

posted on 2016-04-12 14:14  波比12  阅读(532)  评论(0编辑  收藏  举报

导航