算法与数据结构 -- 栈与队列(四)

栈与队列定义了数据的操作

一、栈

栈是一种先入先出的数据结构。可以用顺序表实现,也可以用链表实现
在这里插入图片描述

栈操作

  1. 判断是否为空
  2. 压栈、入栈push
  3. 出栈 pop
  4. 返回栈顶元素 peek
  5. 栈的元素个数
# coding:utf-8
'''
用python中的列表实现栈
栈是后入先出
在这里,将列表的尾部看成活动的
入栈和出栈都在列表尾部实现
列表尾部也是栈顶
'''
class Stack():def __init__(self):self.__list = []def is_empty(self):'''判断栈是否为空:return:'''return self.__list==[]def push(self,item):'''入栈.:param item:压入元素:return:'''self.__list.append(item)def pop(self):'''出栈:return: 列表弹出的栈顶元素'''if self.is_empty():print('栈已空')else:return self.__list.pop()def peek(self):'''读取栈顶元素,不改变原列表:return: 栈顶元素'''return self.__list[-1]

二、队列

用python中的列表实现队列
队列是先入先出
在这里,在列表的头部出列,列表尾部入列.这里的定义的方向也可以反过来
队列操作

  1. 栈的元素个数
  2. 判断是否为空
  3. 入列
  4. 出列
  5. 列表长度
class Queue():def __init__(self):self.__list = []def is_empty(self):'''判断栈是否为空:return:'''return self.__list==[]def en_queue(self,item):'''入列:param item::return:'''self.__list.append(item)def de_queue(self):'''出列:return:列表头部数据'''if self.is_empty():print('队列已空')else:return self.__list.pop(0)def size(self):''':return:栈里面元素个数'''return len(self.__list)

三、双向队列

用python中的列表实现双向队列
双向队列两端均可进列、出列
在这里,将列表的头部看成队列的头部,列表尾看成队列的尾部.这里的定义的方向也可以反过来
双向队列操作

  1. 判断是否为空
  2. 头部入列
  3. 尾部入列
  4. 头部出列
  5. 尾部出列
  6. 列表长度
class Queue():def __init__(self):self.__list = []def is_empty(self):'''判断栈是否为空:return:'''return self.__list==[]def en_front(self,item):'''头部入列:param item::return:'''self.__list.insert(0,item)def en_rear(self,item):'''尾部入列:param item::return:'''self.__list.append(item)def de_front(self):'''头部出列:return:列表头部数据'''if self.is_empty():print('队列已空')else:return self.__list.pop(0)def de_rear(self):'''尾部部出列:return:列表尾部数据'''if self.is_empty():print('队列已空')else:return self.__list.pop()def size(self):''':return:栈里面元素个数'''return len(self.__list)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部