python实现列表栈类和链表栈类
列表栈:
列表栈的实现很简单,仅需要直接利用列表的内置函数即可。
class Stack_St:
'''顺序表栈'''
def __init__(self, max_size):
self.List = []
self.max_size = max_size
def push(self, element):
if self.full() == 0:
self.List.append(element)
return True
else:
return False
def pop(self):
if self.empty() == 0:
self.List.pop(self)
return True
else:
return False
def full(self):
if len(self.List) == self.max_size:
return True
else:
return False
def empty(self):
if len(self.List) == 0:
return True
else:
return False
def find(self, element):
try:
index = self.List.index(element)
return index
except:
return -1
def peek(self):
if self.empty():
return None
else:
return self.List[-1]
链表栈:
实现链表栈的时候,我们还要新建一个结点类。
插入元素的时候,我们选择用尾部插入法。
class Node:
def __init__(self, value, next = None):
self.value = value
self.next = next
class Stack_Ll:
'''链表栈'''
def __init__(self):
self.head = Node(None)
self.rearNode = self.head
self.size = 0
def push(self,value):
newNode = Node(value)
self.rearNode.next = newNode
self.rearNode = newNode
self.size += 1
def pop(self):
if self.empty():
return False
else:
tempNode = self.head
while tempNode.next != self.rearNode:
tempNode = tempNode.next
tempNode.next = None
self.rearNode = tempNode
self.size -= 1
def empty(self):
if self.head.next:
return False
else:
return True
def peek(self):
if self.empty():
return False
else:
return self.rearNode.value
def __str__(self):
output = []
p = self.head
while p.next:
p = p.next
output.append(str(p.value))
return ",".join(output)