数据结构之栈和队列
---恢复内容开始---
栈和队列
1. 栈(Stack):其实就像一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能在容器的一端(称为栈顶 top)进行加入数据(push)和输出数据(pop)的运算,我们访问或者删除的元素都是最后存入的那个元素。由于栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, Last In First Out)的原理运作。简单点来说就是我们往一个箱子里面叠放东西,越后放入的东西越靠上,我们拿东西的时候也是从上面的书开始拿起。
python 3 实现代码如下:
class MyStack(object):
'''栈功能有:
插入数据 push
删除数据 pop
判断是否为空 is_empty
查看数据栈顶元素 peek
查看栈大小 size
遍历栈 travel
'''
def __init__(self):
self.items = []
def push(self,item):
self.items.append(item)
def pop(self):
return self.items.pop()
def is_empty(self):
return len(self.items) == []
def peek(self):
return self.items[len(self.items)-1]
def size(self):
return len(self.items)
def travel(self):
if 0 != len(self.items):
print("栈的元素有")
for item in self.items:
print(item)
else:
print('栈没有任何元素')
if __name__ == "__main__":
stack = MyStack()
stack.push("第一个元素:66")
stack.push("第二个元素:88")
stack.push("第三个元素:22")
print("栈中元素个数:%d" % stack.size())
stack.travel()
print("返回栈顶元素:%s" % stack.peek())
print("删除栈顶元素:%s" % stack.pop())
print("删除栈顶元素:%s" % stack.pop())
print("删除栈顶元素:%s" % stack.pop())
2. 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表,它不允许从中间操作数据。可以理解成我们排队打饭的队伍,后面来的排后面,前面的打完饭就离开。
Python 3 实现代码如下:
class Queue(object):
'''队列
1. 插入数据 push
2. 删除数据 pop
3. 查看大小 size
4. 遍历 travel
'''
def __init__(self):
self.items = []
def push(self,item):
#从排尾插入排队,队伍最后一个人为列表元素的0位
self.items.insert(0,item)
def pop(self):
#删除排头,即列表最后一位数
return self.items.pop()
def size(self):
return len(self.items)
def stravel(self):
if 0 != len(self.items):
for item in self.items:
print(item,end = " ") #end =" " 用法将输出的列表不换行
print(" ")
if __name__ == "__main__":
queue = Queue()
queue.push("第一个排队的人")
queue.push("第二个排队的人")
queue.push("第三个排队的人")
print("队列的长度为:",queue.size() )
queue.stravel()
print("删除排头:",queue.pop())
queue.stravel()
print("再删除排头:",queue.pop())
posted on 2019-01-24 20:46 人与人之间的交流技巧——心 阅读(117) 评论(0) 收藏 举报
浙公网安备 33010602011771号