class ArrayStack:
def __init__(self) -> None:
self.__stack = []
def size(self):
return len(self.__stack)
def is_empty(self):
if self.size() == 0:
return True
else:
return False
def push(self, val):
self.__stack.append(val)
def pop(self):
if self.is_empty():
raise IndexError('栈中无数据')
else:
return self.__stack.pop(-1)
def peek(self):
if self.is_empty():
raise IndexError('栈中无数据')
else:
return self.__stack[-1]
def to_list(self):
return self.__stack
class ListNode:
def __init__(self, value) -> None:
self.val = value
self.next = None
class ListStack:
def __init__(self) -> None:
self.__peek = None
self.__size = 0
def size(self):
return self.__size
def is_empty(self):
if self.__peek == None:
return True
else:
return False
def push(self, val):
node = ListNode(val)
if self.is_empty():
self.__peek = node
else:
stack_next = self.__peek
self.__peek = node
self.__peek.next = stack_next
self.__size += 1
def pop(self):
if self.is_empty():
raise IndexError('栈中无数据')
else:
pop_listnode = self.__peek
self.__peek = self.__peek.next
return pop_listnode.val
def peek(self):
if self.is_empty():
raise IndexError('栈中无数据')
else:
return self.__peek.val
def to_list(self):
lst = []
peek = self.__peek
while peek:
lst.append(peek.val)
peek = peek.next
lst.reverse()
return lst
class ArrayQueue:
def __init__(self) -> None:
self.__queue = []
self.__size = 0
def size(self):
return self.__size
def is_empty(self):
if self.size() == 0:
return True
else:
return False
def push(self, val):
self.__queue.append(val)
self.__size += 1
def pop(self):
if self.is_empty():
raise IndexError('队列无数据')
else:
val = self.__queue.pop(0)
self.__size -= 1
return val
def to_list(self):
return self.__queue
class ListNode:
def __init__(self, value) -> None:
self.val = value
self.next = None
class ListQueue:
def __init__(self) -> None:
self.__front = None
self.__rear = None
self.__size = 0
def size(self):
return self.__size
def is_empty(self):
if self.size() == 0:
return True
else:
return False
def push(self, value):
node = ListNode(value)
if self.is_empty():
self.__front = node
self.__rear = node
else:
self.__rear.next = node
self.__rear = node
self.__size += 1
def pop(self):
if self.is_empty():
raise IndexError('队列无数据')
else:
node = self.__front
self.__front = self.__front.next
self.__size -= 1
return node.val
def to_list(self):
lst = []
node = self.__front
while node:
lst.append(node.val)
node = node.next
return lst
class ArrayDeque:
def __init__(self) -> None:
self.__deque = []
self.__size = 0
def size(self):
return self.__size
def is_empty(self):
if self.size() == 0:
return True
else:
return False
def push(self, val, where):
if where == 'front':
self.__deque.insert(0, val)
elif where == 'rear':
self.__deque.insert(-1, val)
self.__size += 1
def pop(self, where):
if self.is_empty():
raise IndexError('队列无数据')
else:
if where == 'front':
val = self.__deque.pop(0)
elif where == 'rear':
val = self.__deque.pop(-1)
self.__size -= 1
return val
def to_list(self):
return self.__deque
class ListNode:
def __init__(self, value) -> None:
self.val = value
self.next = None
self.prev = None
class ListDeque:
def __init__(self) -> None:
self.__front = None
self.__rear = None
self.__size = 0
def size(self):
return self.__size
def is_empty(self):
if self.size() == 0:
return True
else:
return False
def push(self, value, where):
node = ListNode(value)
if self.is_empty():
self.__front = node
self.__rear = node
else:
if where == 'front':
self.__front.prev = node
node.next = self.__front
self.__front = node
elif where == 'rear':
self.__rear.next = node
node.prev = self.__rear
self.__rear = node
self.__size += 1
def pop(self, where):
if self.is_empty():
raise IndexError('队列无数据')
else:
if where == 'front':
node = self.__front.next
if node:
self.__front.next = None
self.__front = node
self.__front.prev = None
elif where == 'rear':
node = self.__rear.prev
if node:
self.__rear.prev = None
self.__rear = node
self.__rear.next = None
self.__size -= 1
def to_list(self):
lst = []
node = self.__front
while node:
lst.append(node.val)
node = node.next
return lst
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuoyibo.net 版权所有 湘ICP备2023021910号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务