首页 > 代码库 > Python 使用list实现堆栈 (基于class, 包含迭代器)
Python 使用list实现堆栈 (基于class, 包含迭代器)
#!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2015-1-27 @author: beyondzhou @name: test_liststack.py ''' def test_liststack(): # import listStack from mystack import listStack print '#Init a stack named smith using push' smith = listStack() smith.push('CSCI-112') smith.push('MATH-121') smith.push('HIST-340') smith.push('ECON-101') print '\n#output smith stack' for element in smith: print element print '\n#pop one item' smith.pop() print '\n#output smith stack after pop' for element in smith: print element print '\n#get the peek item' peek_item = smith.peek() print 'peek item is ', peek_item print '\n#get the length of stack' print 'the lenght of stack is ', len(smith) print '\n#check wheter the stack is empty' if smith.isEmpty(): print 'stack is empty!' else: print 'stack is not empty!' print '\n#pop all items' while not smith.isEmpty(): smith.pop() print '\n#check wheter the stack is empty after pop all items' if smith.isEmpty(): print 'stack is empty!' else: print 'stack is not empty!' if __name__ == "__main__": test_liststack()
# Implementation of iter class _StackIterator: def __init__(self, theList): self._setItems = theList self._curItem = 0 def __iter__(self): return self def next(self): if self._curItem < len(self._setItems): item = self._setItems[self._curItem] self._curItem += 1 return item else: raise StopIteration # Implementation of the Stack ADT using a Python list class listStack: # Created an empty stack def __init__(self): self._theItems = list() # Returns True if the stack is empty or False otherwise def isEmpty(self): return len(self) == 0 # Returns the number of items in the stack def __len__(self): return len(self._theItems) # Returns the top item on the stack without removing it def peek(self): assert not self.isEmpty(), "Cannot peek at an empty stack" return self._theItems[-1] # Removes and returns the top item on the stack def pop(self): assert not self.isEmpty(), "Cannot peek at an empty stack" return self._theItems.pop() # Push an item onto the top of the stack def push(self, item): self._theItems.append(item) # Returns an iterator for traversing the list of items def __iter__(self): return _StackIterator(self._theItems)
#Init a stack named smith using push #output smith stack CSCI-112 MATH-121 HIST-340 ECON-101 #pop one item #output smith stack after pop CSCI-112 MATH-121 HIST-340 #get the peek item peek item is HIST-340 #get the length of stack the lenght of stack is 3 #check wheter the stack is empty stack is not empty! #pop all items #check wheter the stack is empty after pop all items stack is empty!
Python 使用list实现堆栈 (基于class, 包含迭代器)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。