1.栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为“栈顶”,
另一固定端称为“栈底”,当栈中没有元素时称为“空栈”。向一个栈内插入元素称为是进栈,push;
从一个栈删除元素称为是出栈,pop。特点 :后进先出(LIFO)。
栈的封装
class Stack(object):
def __init__(self):
self.stack = []
def __len__(self):
return len(self.stack)
def push(self, item):
self.stack.append(item)
print('元素【%s】入栈成功' %(item))
def pop(self):
if not self.is_empty():
item = self.stack.pop()
print('元素【%s】出栈成功' %(item))
# else:
# raise Exception('栈为空')
def top(self):
if not self.is_empty():
item = self.stack[-1]
print('栈顶元素为:【%s】' %(item))
# else:
# raise Exception('栈为空')
def length(self):
return len(self.stack)
def is_empty(self):
return len(self.stack) == 0
stack = Stack()
stack.push(5)
stack.push(3)
print(len(stack))
stack.pop()
stack.is_empty()
stack.pop()
stack.is_empty()
stack.pop()
stack.push(7)
stack.push(9)
stack.pop()
stack.top()
print(len(stack))
stack.pop()
stack.push(6)
stack.push(8)
stack.pop()
2.队列是限制在一端进行插入操作和另一端删除操作的线性表,允许进行插入操作的一端称为“队尾”,
允许进行删除操作的一端称为“队头”,,当队列中没有元素时称为“空队”。特点 :先进先出(FIFO)。
队列的封装
class Queue(object):
def __init__(self):
self.__queue = []
def __len__(self):
#求队列长度
return len(self.__queue)
def is_empty(self):
#判断队列是否为空
return len(self.__queue) == 0
def enqueue(self,item):
#入队操作
self.__queue.append(item)
print('元素【%s】入对成功' %(item))
def first(self):
if not self.is_empty():
item = self.__queue[0]
print('对头元素为:【%s】' % (item))
else:
raise Exception('队列为空')
def dequeue(self):
if not self.is_empty():
item = self.__queue.pop(0)
print("元素【%s】出对成功" %(item))
else:
raise Exception('队列为空')
def display(self):
return self.__queue
queue = Queue()
queue.enqueue(5)
queue.enqueue(3)
print(queue.display())
print(len(queue))
queue.dequeue()
queue.is_empty()
queue.dequeue()
queue.is_empty()
# queue.dequeue()
queue.enqueue(7)
queue.enqueue(9)
queue.first()
queue.enqueue(4)
print(len(queue))
queue.dequeue()