栈可以用顺序表实现,也可以用链表实现。
# -*- encoding: utf-8 -*-
"""栈结构实现
栈可以用顺序表实现,也可以用链表实现。
栈的操作
Stack() 创建一个新的空栈
push(item) 添加一个新的元素item到栈顶
pop() 弹出栈顶元素
peek() 返回栈顶元素
is_empty() 判断栈是否为空
size() 返回栈的元素个数"""
class Stack(object):
"""栈:顺序表实现的栈"""
def __init__(self):
# 私有属性,内部使用,使用双下划线“__head”
self.__head = []
def is_empty(self):
"""判断栈是否为空?"""
return self.__head == []
def push(self, item):
"""添加一个新的元素item到栈顶"""
self.__head.append(item)
def pop(self):
"""弹出栈顶元素"""
return self.__head.pop()
def peek(self):
"""返回栈顶元素"""
if self.__head:
return self.__head[-1]
else:
return None
def size(self):
"""返回栈的元素个数"""
return len(self.__head)
if __name__ == '__main__':
s = Stack()
s.push(12)
s.push(23)
s.push(89)
print s.size()
print s.pop()
print s.peek()
print s.pop()
print s.peek()
3
89
23
23
12
[Finished in 0.1s]
同栈一样,队列也可以用顺序表或者链表实现。
# -*- encoding: utf-8 -*-
class Queue(object):
"""队列"""
def __init__(self):
# 私有属性,内部使用,使用双下划线“__head”
self.__head = []
def is_empty(self):
"""判断队列是否为空?"""
return self.__head == []
def enqueue(self, item):
"""添加一个新的元素item到队列顶"""
self.__head.append(item)
def dequeue(self):
"""弹出队列顶元素"""
return self.__head.pop(0)
def size(self):
"""返回队列的元素个数"""
return len(self.__head)
if __name__ == '__main__':
s = Queue()
s.enqueue(12)
s.enqueue(23)
s.enqueue(89)
print s.size()
print s.dequeue()
print s.dequeue()
3
12
23
[Finished in 0.5s]