数据结构之堆栈和队列在python中的实现
1栈和队列是两种基本的数据结构
数据结构之-栈
1.1 栈(stacks)是一种只能通过访问其一端来实现数据存储与检索的线性数据结构,具有后进先出(last in first out,LIFO)的特征,仅能够在栈顶进行操作,,下面这张图展示了栈的工作特点:
仅能够在栈顶进行操作生活中的一个非常贴切的列子,玩羽毛球的同学都会买一筒羽毛球,羽毛球就是这种典型的堆栈结构。
1.2 基本用法
>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop()
7
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack.pop()
5
>>> stack
[3, 4]
1.3一个实例说明
函数 | 说明 |
---|---|
Stack() | 创建堆栈 |
push(item) | 向栈顶插入项 |
pop() | 删除栈顶的项 |
clear() | 清空堆栈 |
is-empty() | 判断堆栈是否为空 |
size() | 返回堆栈中的个数 |
top() | 返回堆栈得项 |
print() | 打印堆栈 |
class Stack(object):
"""堆栈"""
def __init__(self, item = []):
self.item = []
if len(item):
for i in item:
self.item.append(i)
def push(self, item):
self.item.append(item)
def clear(self):
del self.item
def is_empty(self):
return self.size() == 0
def size(self):
return len(self.item)
def print(self):
print(self.item)
def top(self):
return self.item[-1]
def pop(self):
data = self.top()
self.item.pop()
return data
print("创建堆栈")
stack = Stack([1,2,3])
stack.print()
print("向栈顶插入元素")
stack.push(4)
stack.print()
print("判断堆栈是否为空")
print(stack.is_empty())
print("返回堆栈中项的个数")
print(stack.size())
print("返回栈顶的项")
print(stack.top())
print("删除栈顶的项")
stack.pop()
stack.print()
print("清空堆栈")
print(stack.clear())
输出结果如下所示;
2.数据结构之-队列
2.1 队列定义:
队列是一种先进先出的线性表。它只允许在表的一端进行插入,在另一端删除元素。
2.2关于队列
>>> from collections import deque
>>> queue = deque(["Eric", "John", "Michael"])
>>> queue.append("Terry") # Terry arrives
>>> queue.append("Graham") # Graham arrives
>>> queue.popleft() # The first to arrive now leaves
'Eric'
>>> queue.popleft() # The second to arrive now leaves
'John'
>>> queue # Remaining queue in order of arrival
deque(['Michael', 'Terry', 'Graham'])
2.3 队列函数说明
函数 | 说明 |
---|---|
Queue() | 创建队列 |
enqueue(item) | 向队列尾部插入元素 |
dequeue() | 删除队列头部栈顶的元素 |
clear() | 清空队列 |
is-empty() | 判断队列是否为空 |
size() | 返回队列中的个数 |
print() | 打印队列 |
class Queue(object):
"""模拟队列"""
def __init__(self, item = []):
self.item = []
if len(item):
for i in item:
self.item.append(i)
def enqueue(self, item):
self.item.append(item)
def dequeue(self):
self.item.pop(0)
def clear(self):
del self.item
def is_empty(self):
return self.size() == 0
def size(self):
return len(self.item)
def print(self):
print(self.item)
print("创建队列")
queue = Queue([1,2,3])
queue.print()
print("向队列插入元素")
queue.enqueue(4)
queue.print()
print("从队列中删除元素")
queue.dequeue()
queue.print()
print("判断队列是否为空")
print(queue.is_empty())
print("返回队列中项的个数")
print(queue.size())
queue.print()
print("清空队列")
print(queue.clear())