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()
文章来源: https://blog.csdn.net/cainiaoayue/article/details/91888133