python实现栈结构
栈的特点:先进后出(FILO)
根据这个特点,我们要对栈顶进行操作,实现以下功能
- 建立一个空栈
- 入栈或者压栈
- 出栈或者弹栈
- 判断是否空栈
- 返回栈顶元素
- 返回栈的元素个数
使用类队函数进行封装
class Stack(object):
# 建立一个空栈
def __init__(self):
self.list=[]
# 压栈、入栈
def push(self,item):
self.list.append(item)
# 弹栈、出栈
def pop(self):
return self.list.pop()
# 返回栈顶
def peek(self):
if self.list:
return self.list[-1]
else:
return None
# 判空
def is_empty(self):
return self.list==[]
# 返回栈的元素个数
def size(self):
return len(self.list)
if __name__ == '__main__':
s = Stack()
s.push(1)
s.push(2)
s.push(3)
s.push(4)
s.push(5)
print(s.size())
print(s.is_empty())
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())
python实现队列
特点:先进先出(FIFO)
根据这个特点,我们要对栈顶进行操作,实现以下功能
- 建立一个空队列
- 入队
- 出队
- 判断是否空队列
- 返回队列的元素个数
使用类队函数进行封装
在这里插入代码片
class Queue(object):
def __init__(self):
self.list=[]
def enqueue(self,item):
self.list.insert(0,item)
def dequeue(self):
return self.list.pop()
def is_empty(self):
return self.list==[]
def size(self):
return len(self.list)
if __name__ == '__main__':
q=Queue()
q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
q.enqueue(4)
print(q.dequeue())
print(q.dequeue())
print(q.dequeue())
print(q.dequeue())
python实现双端队列
特点:可从两端添加和弹出元素
class Dequ(object):
def __init__(self):
self.list=[]
def add_front(self,item):
self.list.insert(0,item)
def add_rear(self,item):
self.list.append(item)
def pop_front(self):
return self.list.pop()
def pop_rear(self):
return self.list.pop(0)
def is_empty(self):
return self.list==[]
def size(self):
return len(self.list)
if __name__ == '__main__':
q=Dequ()
q.add_front(1)
q.add_front(2)
q.add_front(3)
q.add_front(4)
print(q.pop_front())
print(q.pop_front())
print(q.pop_front())
print(q.pop_front())