因为这几天工作也挺忙的,一直忘记把自学第三天的内容给发布,这也离他的上篇发布有5天时间了,我今天也就简单完善的发布一下吧!!! 至于我一个为啥又在自学python呢??? 首先声明,我也不是为了卷,什么卷天卷地卷死你了,,, 想了解具体原因呢???请移驾上篇!!!
class Queue(object):
def __init__(self): #初始化空队列
self.list = []
def push(self,item): #入队
self.list.append(item) #尾进
# self.list.insert(0,item) #头进
def pop(self): #出队
# return self.list.pop(0) #头出
return self.list.pop() #尾出
def is_empty(self): # 判断是否为空
return self.list == []
def size(self): # 判断长度
return len(self.list)
def __str__(self): #遍历所有队列当中的队员
return "队员(%r)" % self.list
s = Queue()
print("入队前为空???:",s.is_empty())
s.push("西施")
s.push("貂蝉")
s.push("昭君")
s.push("玉环")
print('入队之后的长度:', s.size())
print(s.pop())
print('出队之后的长度:', s.size())
print("入队后为空???:",s.is_empty())
print(s)
还是老样子,使用最便捷的方式,代码也不难理解,(也是boss最不认同的方式,说这样习惯用原生的方法会影响代码自己编程的质量,代码越写越差什么的,咱也怼不过,只能服从去从数据的结构入手,那么自定义链表节点的方式它来了)
class Node(object): ##节点,包括两个属性,一个是节点的值,一个是节点的下一个指向
def __init__(self,value):
self.value = value #赋值给节点
self.next = None #节点的下一个指向
class Queue: #初始化队列,默认队列大小6, 先入先出
def __init__(self):
self.first = None
self.last = None
def put(self,element): #先入队
packNode = Node(element)
if self.first == None:
self.first = packNode
self.last = packNode
else:
self.last.next = packNode
self.last = packNode
def get(self): #先出队
if self.first == None:
return None
elif self.first == self.last:
tmp = self.first.value
self.first, self.last = self.first.next, self.first.next
return tmp
else:
tmp = self.first.value
self.first = self.first.next
return tmp
def empty(self):
self.list=[]
s = Queue()
el = ["西施","貂蝉","昭君","玉环"]
for n in el:
s.put(n)
print("队列首元素:",s.first.value)
print("队列尾元素:",s.last.value)
# print("当前队列的元素:",s.list)
print("正在移出队列的是:",s.get())
# print("当前队列的元素:",s.list)
不知各位看的咋样??? 我也不再过多啰嗦了,自我感觉我写的知识挺全乎的, 应该! 大概!! 可能不难理解吧!!! 上篇:python实现栈