代码实现-栈、队列、双端队列

栈(Stack)

 1 - 特性:先进后出的数据结构 
 2 - 概念:一个元素的有序集合,添加和删除元素只发生在顶端,最先添加的元素会随着新的元素添加向后移动到底端。遵循特性,这种排序原则被称为LIFO
 3 - Stack():创建栈,不需要参数,返回一个空栈
 4 - push(item):将一个新添项添加到栈的顶部,需要item参数但不返回任何参数
 5 - pop():从栈的顶部开始删除项,不需要参数返回item(删除项),栈同时被修改
 6 - peek():仅返回栈的顶部项,不需要参数,不修改栈
 7 - jsEmpty():检测栈是否为空,不需要参数,返回布尔值
 8 - size():返回栈中项的数量(整数),不需要整数
 9 
10 class Stack():
11     def __init__(self):
12         self.items = []
13         
14     def push(self, item):
15         self.items.append(item)
16         
17     def pop(self):
18         if not self.jsEmpty():
19             return self.items.pop()
20         
21     def peek(self):
22         return self.items[len(self.items) -1]
23     
24     def size(self):
25         return len(self.items)
26     
27     def jsEmpty(self):
28         return self.items == []

队列(Queue)

 1 - 特性:先进先出
 2 - 概念:一个元素的有序集合,添加元素时从底端添加至顶端,删除时从顶端移除。遵循特性,这种排序原则被称为FIFO
 3 - Queue():创建新的队列,不需要参数,返回空的队列
 4 - enqueue(item):向队列中添加项
 5 - dequeue():从队首移除项,不需要参数返回移除的项,修改队列
 6 - isEmpty():查看队列是否为空,不需要参数,返回布尔值
 7 - size():返回队列中的项数(返回整数),不需要参数
 8 
 9 class Queue():
10     def __init__(self):
11         self.items = []
12         
13     def enqueue(self, item):
14         return self.items.append(item)
15     
16     def dequeue(self):
17         if not self.isEmpty():
18             return self.items.pop()
19     
20     def isEmpty(self):
21         return self.items == []
22     
23     def size(self):
24         return len(self.items)
25     
队列

双端队列(Deque)

 1 - 特性:添加和删除项是非限制性的,可从前后端添加和移除项。这种混合结线性构提供了单个数据结构中的栈和队列的所有功能
 2 - 概念:与队列类似项的有序集合。有首端和尾端两端,在集合中保持不变
 3 - Deque():创建新的deque,不需要参数,返回空的deque
 4 - addFront():将一个新的项添加到deque前端,需要参数,不返回任何内容
 5 - addRear():将一个新的项添加到deque后端,需要参数,不返回任何内容
 6 - removeFront():从deque前端删除一项,不需要参数,返回删除的项,修改deque
 7 - removeRear():从deque后端删除一项,不需要参数,返回删除的项,修改deque
 8 - isEmpty():判断deque是否为空,不需要参数,返回布尔值
 9 - size():测量deque中项的个数(返回整数),不需要参数
10 
11 class Deque():
12     def __init__(self):
13         self.items = []
14         
15     def addFront(self, item):
16         return self.items.append(item)
17     
18     def addRear(self, item):
19         return self.items.insert(0, item)
20     
21     def removeFront(self):
22         if not self.isEmpty():
23             return self.items.pop()
24         
25     def removeRear(self):
26         if not self.isEmpty():
27             return self.items.pop(0)
28     
29     def isEmpty(self):
30         return self.items == []
31     
32     def size(self):
33         return len(self.items)
双端队列

猜你喜欢

转载自www.cnblogs.com/zhao-peng-/p/10931901.html