码迷,mamicode.com
首页 > 其他好文 > 详细

栈的实现

时间:2017-12-24 16:50:43      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:def   element   显示   return   初始化   obj   int   post   odi   

 1 # -*- coding:utf-8 -*-
 2 """
 3 数据结构的核心是,一个结构只有特定的操作, 可以实现特定的功能
 4 栈的特点是 先进先出 , 一般有这几个操作
 5 push 将一个元素存入栈中
 6 pop 将一个元素从栈中取出, 并在栈中删除他
 7 
 8 top 将一个元素从栈中取出
 9 is_empty 查看栈是否为空
10 """
11 
12 
13 # Node 类是一个节点, 有两个属性, 一个储存元素,一个储存指向另一个节点的引用
14 class Node(object):
15     def __init__(self, element=None, next=None):
16         self.element = element
17         self.next = next
18 
19     # 这个函数会在print的时候自动调用, 就是把Node显示出来
20     def __repr__(self):
21         return str(self.element)
22 
23 
24 class Stack(object):
25     # 初始化函数, 自动被调用
26     # 初始化Stack()类的时候, 他有一个head的属性, 值是一个空的Node
27     def __init__(self):
28         self.head = Node()
29 
30     # 如果head的next的属性为空, 说明栈为空
31     def is_empty(self):
32         return self.head.next is None
33 
34     # 这样不行, 最后找不到head
35     # # 创建一个node,
36     # def push(self,element):
37     #     n = Node(element)
38     #     self.head.next = n
39     #     self.head = n
40 
41     # 创建一个node, 并让他指向当前的head.next指向的元素, 在把head.next指向他
42     def push(self, element):
43         n = Node(element, self.head.next)
44         self.head.next = n
45 
46     def pop(self):
47         n = self.head.next
48         if not self.is_empty():
49             self.head.next = n.next
50         return n
51 
52 
53 def test():
54     s = Stack()
55     s.push(1)
56 
57     print(s.pop())
58     s.push(2)
59     s.push(3)
60     s.push(4)
61     s.push(5)
62     print(s.pop())
63     print(s.pop())
64     print(s.pop())
65     print(s.pop())
66 
67 
68 if __name__ == "__main__":
69     test()

 

栈的实现

标签:def   element   显示   return   初始化   obj   int   post   odi   

原文地址:http://www.cnblogs.com/cuzz/p/8098182.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!