您的位置:首页 > 理论基础 > 数据结构算法

数据结构与算法(二):栈和队列的python实现

2019-03-07 10:29 344 查看

栈和队列都可以使用顺序表实现,为了节约时间我们使用python里的list实现。

class Stack(object):
"""栈"""
def __init__(self):
self.items = []

def is_empty(self):
"""判断是否为空"""
return self.items == []

def push(self, item):
"""加入元素"""
self.items.append(item)

def pop(self):
"""弹出元素"""
return self.items.pop()

def peek(self):
"""返回栈顶元素"""
return self.items[len(self.items)-1]

def size(self):
"""返回栈的大小"""
return len(self.items)

if __name__ == "__main__":
stack = Stack()
stack.push("hello")
stack.push("world")
stack.push("itcast")
print stack.size()
print stack.peek()
print stack.pop()
print stack.pop()
print stack.pop()

队列

class Queue(object):
"""队列"""
def __init__(self):
self.items = []

def is_empty(self):
return self.items == []

def enqueue(self, item):
"""进队列"""
self.items.insert(0,item)

def dequeue(self):
"""出队列"""
return self.items.pop()

def size(self):
"""返回大小"""
return len(self.items)

if __name__ == "__main__":
q = Queue()
q.enqueue("hello")
q.enqueue("world")
q.enqueue("itcast")
print q.size()
print q.dequeue()
print q.dequeue()
print q.dequeue()

双端队列

class Deque(object):
"""双端队列"""
def __init__(self):
self.items = []

def is_empty(self):
"""判断队列是否为空"""
return self.items == []

def add_front(self, item):
"""在队头添加元素"""
self.items.insert(0,item)

def add_rear(self, item):
"""在队尾添加元素"""
self.items.append(item)

def remove_front(self):
"""从队头删除元素"""
return self.items.pop(0)

def remove_rear(self):
"""从队尾删除元素"""
return self.items.pop()

def size(self):
"""返回队列大小"""
return len(self.items)

if __name__ == "__main__":
deque = Deque()
deque.add_front(1)
deque.add_front(2)
deque.add_rear(3)
deque.add_rear(4)
print deque.size()
print deque.remove_front()
print deque.remove_front()
print deque.remove_rear()
print deque.remove_rear()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: