(1)栈的特点
- 先进后出
(1.1)栈的实现 :通过数组模拟栈
- length() :表示栈的长度
- is_empty() :栈是否为空,为空返回True,非空返回False
- push(element) :向栈中添加元素
- top () :返回栈顶的元素
- pop() :删除入栈的元素
#栈的实现
class ArryPush(object) :
def __init__(self):
self._stack =[]
def __len__(self):
return len(self._stack)
def is_empty(self):
return len(self._stack) == 0
def push(self,element): #入栈
self._stack.append(element)
def top(self): #返回栈顶元素
if self.is_empty() :
return False
return self._stack[-1]
def pop(self): # 出栈
if self.is_empty():
return False
val = self._stack[-1]
del self._stack[-1]
return val
def get_push(self):
return self._stack
(2 ) 队列的特点
- 先进先出
(2.1)队列的方法
- length() :表示队列的长度
- is_empty() :队列是否为空,为空返回True,非空返回False
- enquene(element) :入队
- first () :返回队列中的元素
- dequene() : 出队
#队列的实现
class Arry(object) :
def __init__(self):
self.queue = []
def get_arry(self):
return self.queue
def is_empty(self):
return len(self.queue)== 0
def __len__(self):
if self.is_empty() :
return False
return len(self.queue)
def enqueue(self,arg):
self.queue.append(arg)
def first(self):
return self.queue[0]
def dequeue(self): #出队
val = self.queue[0] #注意这里的方法
del self.queue[0]
return val
(3)双端队列
(3.1)
(3.2)双端队列的实现
class deque(object) :
def __init__(self):
self.deque = []
def self_deque(self):
return self.deque
def __len__(self):
return len(self.deque)
def first(self):
return self.deque[0]
def last(self):
return self.deque[-1]
def add_first(self,element): #左添加
return self.deque.insert(0,element)
def add_last(self,element):
return self.deque.insert(-1,element)
def delete_first(self):
del self.deque[0]
def delete_last(self):
del self.deque[-1]