在Python中,实现堆栈有两种方式:列表结构、链表结构
1、堆栈的操作
- Stack() 创建一个新的空栈
- push(item) 添加一个新的元素item到栈顶
- pop() 弹出栈顶元素
- peek() 返回栈顶元素
- is_empty() 判断栈是否为空
- size() 返回栈的元素个数
2、列表实现堆栈
class Stack(object):
def __init__(self):
self.arr = []
def is_empty(self):
if self.arr == None:
return True
def push(self, item):
self.arr.append(item)
def pop(self):
return self.arr.pop()
def peek(self):
return self.arr[-1]
def size(self):
return len(self.arr)
3、链表实现堆栈
class Node(object):
def __init__(self,data,next=None):
self.data = data
self.next = next
class Stack(object):
def __init__(self):
self._head = Node(None)
def is_empty(self):
return self._head == None
def push(self, data):
p = Node(data)
if self.is_empty():
self._head = p
else:
p.next = self._head
self._head = p
def pop(self):
if self.is_empty():
return None
else:
cur = self._head
self._head = self._head.next
return cur.data
def size(self):
cur = self._head
count = 0
while cur != None:
cur = cur.next
count +=1
return count