修改以下代码:MaxSize=5 #全局变量,假设容量为5 class LinkNode: #链队结点类 def __init__(self,data=None): #构造方法 self.data=[None] *MaxSize #data属性 self.next=None #next属性 class LinkQueue: #链队类 def __init__(self): #构造方法 self.front=None #队头指针 self.rear=None #队尾指针 def empty(self): # 判断队是否为空 return self.front == self.rear def push(self, e): # 元素e进队 s = LinkNode(e) # 新建结点s if self.empty(): # 原链队为空 self.front = self.rear = s else: # 原链队不空 self.rear.next = s # 将s结点链接到rear结点后面 self.rear = s def pop(self): # 出队操作 assert not self.empty() # 检测空链队 if self.front == self.rear: # 原链队只有一个结点 e = self.front.data # 取首结点值 self.front = self.rear = None # 置为空队 else: # 原链队有多个结点 e = self.front.data # 取首结点值 self.front = self.front.next # front指向下一个结点 return e def gethead(self): # 取队头元素 assert not self.empty() # 检测空链队 e = self.front.data # 取首结点值 return e def size(self): # 返回队中元素个数 return ((self.rear - self.front + MaxSize) % MaxSize) #主程序 if __name__ == '__main__': t=LinkQueue() t.push(4) t.push(6) t.push(1) t.push(9) print(" 队列元素个数:%d" % (t.size())) print() print("队头元素: %d" % (t.gethead())) print(" 出队元素:%d" % (t.pop())) print(" 队列元素个数:%d" % (t.size())) print()
时间: 2024-02-14 20:20:52 浏览: 74
MaxSize=5 #全局变量,假设容量为5
class LinkNode: #链队结点类
def __init__(self,data=None): #构造方法
self.data=data #data属性
self.next=None #next属性
class LinkQueue: #链队类
def __init__(self): #构造方法
self.front=None #队头指针
self.rear=None #队尾指针
def empty(self): # 判断队是否为空
return self.front == None and self.rear == None
def push(self, e): # 元素e进队
s = LinkNode(e) # 新建结点s
if self.empty(): # 原链队为空
self.front = self.rear = s
else: # 原链队不空
self.rear.next = s # 将s结点链接到rear结点后面
self.rear = s
def pop(self): # 出队操作
assert not self.empty() # 检测空链队
if self.front == self.rear: # 原链队只有一个结点
e = self.front.data # 取首结点值
self.front = self.rear = None # 置为空队
else: # 原链队有多个结点
e = self.front.data # 取首结点值
self.front = self.front.next # front指向下一个结点
return e
def gethead(self): # 取队头元素
assert not self.empty() # 检测空链队
e = self.front.data # 取首结点值
return e
def size(self): # 返回队中元素个数
p = self.front
n = 0
while p != None:
n += 1
p = p.next
return n
#主程序
if __name__ == '__main__':
t=LinkQueue()
t.push(4)
t.push(6)
t.push(1)
t.push(9)
print(" 队列元素个数:%d" % (t.size()))
print()
print("队头元素: %d" % (t.gethead()))
print(" 出队元素:%d" % (t.pop()))
print(" 队列元素个数:%d" % (t.size()))
print()
修改内容:
1. LinkNode类的构造方法中,将data的默认值改为None,因为如果不传入参数,data的值应该是空的。
2. LinkQueue类的empty方法中,判断条件应该是队头和队尾都为None才算是空队列。
3. LinkQueue类的size方法中,用指针p遍历队列,统计元素个数。
4. 主程序中,按照修改后的方法调用LinkQueue类的方法。
阅读全文