目录
栈的定义栈的基本操作小练习 1.栈的定义栈遵循后进先出(Last In First Out),现实生活中也有不少这样的例子,比如在学校食堂吃完饭时,你把盘子放到桌子上,叠起来之后,阿姨过来拿盘子出去洗,假如是手洗,那肯定是先从最上面的盘子开始拿来洗的,而最上面的盘子是最后放上去的,却是第一个 被拿出来的,这就是后进先出,与之相同的还有查看网页,比如你查找“stack”,往往你会打开好几张网页链接,然后再继续开,你一开始看的网页应该就是你最后打开的。
2.栈的基本操作 class Node(object): def __init__(self, data, next = None): self.data = data self.next = nextclass Stack(object): def __init__(self, top = None): self.top = top def push(self,data): #创建新的节点放到栈顶 self.top = Node(data, self.top) def pop(self): #拿出栈顶元素,原来的栈发生改变 if self.top is None: return None data = self.top.data self.top = self.top.next return data def peek(self): #查看栈顶元素,原来的栈不变 return self.top.data if self.top is not None else None def isEmpty(self): return self.peek() is Noneif __name__ == "__main__": stack = Stack() stack1 = stack.push(1) stack1 = stack.push(2) print stack.peek(), #查看栈顶元素 stack.pop() print stack.peek()#输出: 2 1 3.小练习使用栈,使得输入字符串元素倒转,即:
"apple"→"elppa"def revStrings(myStr): stack = Stack() for ch in myStr: stack.push(ch) revStr = '' while not stack.isEmpty(): revStr += stack.pop() return revStr print revStrings("apple")
写不出或报错的人,主要有以下原因:
不会使用栈的思想:后进先出没想到字符串遍历字符串拼接问题