|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 苏丛 于 2019-1-17 16:24 编辑
这是用Python写的一个循环队列
- class Node:
- def __init__(self, value):
- self.val = value
- self.next = self.pre = None
- class MyCircularQueue:
- def __init__(self, k):
- self.size = k
- self.curSize = 0
- self.head = self.tail = Node(-1)
- self.head.next = self.tail
- self.tail.pre = self.head
- def enQueue(self, value):
- if self.curSize < self.size:
- node = Node(value)
- node.pre = self.tail.pre
- node.next = self.tail
- node.pre.next = node.next.pre = node
- self.curSize += 1
- return True
- return False
- def deQueue(self):
- if self.curSize > 0:
- node = self.head.next
- node.pre.next = node.next
- node.next.pre = node.pre
- self.curSize -= 1
- return True
- return False
- def Front(self):
- return self.head.next.val
- def Rear(self):
- return self.tail.pre.val
- def isEmpty(self):
- return self.curSize == 0
- def isFull(self):
- return self.curSize == self.size
复制代码
就是第19行那两个等号,
我想问是那个先执行的,
按照代码逻辑,应该是先执行
再执行
这样的话就是从左到右,
但是我验证了一下,Python是从右到左执行的
这是我的验证方法
- class Node:
- def __init__(self, value):
- self.val = value
- self.pre = self.next = None
- # 生成一些对象
- ojs = list()
- for i in range(5):
- ojs.append(Node(i))
- # 将对象的尾部相连
- for i in range(4):
- ojs[i].next = ojs[i+1]
- # 将对象的头部相连
- for i in range(1, 5):
- ojs[i].pre = ojs[i-1]
- d = Node(666)
- ojs[4].pre.pre = ojs[4].pre = d
- # ojs[4].pre = ojs[4].pre.pre = d
- print(ojs[4].pre.pre) #执行结果为:None,说明是从右到左
复制代码
这里就出现了矛盾,所以究竟是什么样一个顺序
请各位大神们不吝赐教
参考这个帖子https://www.v2ex.com/amp/t/443384,例如a = b =c= x,应该是a = x,b = a,c=a
|
|