1. 棧stack
既可用順序表(連續存儲),也可用鏈表表示(離散存儲)
#棧
class Stack(object):#object表示繼承
def __init__(self):
self.__list = []
def push(self,item):#壓棧
return self.__list.append(item)
def pop(self):#彈棧
return self.__list.pop()
def peek(self):#返回棧頂值,但是不改動棧
if self.__list:#非空
return self.__list[-1]
def is_empty(self):
return not self.__list#True
def size(self):
return len(self.__list)
if __name__ == '__main__':
s = Stack()
s.push(1)
s.push(2)
s.push(3)
print(s.pop())
print(s.pop())
print(s.pop())
2. 隊列 list
(1).單端隊列
class Queue(object):#隊列
def __init__(self):
self.__list = []
def enqueue(self,item):#入隊
return self.__list.append(item)
def dequeue(self):#出隊
return self.__list.pop(0)#先入先出
def is_empty(self):
return not self.__list
def size(self):
return len(self.__list)
if __name__ == '__main__':
q = Queue()
q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
print(q.dequeue())
print(q.dequeue())
print(q.dequeue())
(2). 雙端隊列deque(double-ended queue):同時具有隊列與棧的性質
class Deque(object):#雙端隊列
def __init__(self):
self.__list = []
def add_front(self,item):#入隊首
return self.__list.insert(0,item)
def add_rear(self,item):#入隊尾
return self.__list.append(item)
def pop_front(self):#出隊首
return self.__list.pop(0)
def pop_rear(self): # 出隊尾
return self.__list.pop()
def is_empty(self):
return not self.__list
def size(self):
return len(self.__list)
if __name__ == '__main__':
q = Deque()