电商网站建设要多少钱,东莞常平常安医院,微信引流神器手机电影网站怎么做,网络运维工程师简历范文对于循环队列来说#xff0c;如果知道队头指针和队中元素个数#xff0c;则可以计算出队尾指针。也就是说#xff0c;可以用队中元素个数代替队尾指针。设计出这种循环队列的判队空、进队、出队和取队头元素的算法。 本例的循环队列包含data 数组、队头指针 front和队中元素… 对于循环队列来说如果知道队头指针和队中元素个数则可以计算出队尾指针。也就是说可以用队中元素个数代替队尾指针。设计出这种循环队列的判队空、进队、出队和取队头元素的算法。 本例的循环队列包含data 数组、队头指针 front和队中元素个数count可以由front 和count求出队尾位置公式如下。
rear1(self.frontself.count)% MaxSize 初始时front和count均置为0。队空条件为count0队满条件为countMaxSize元素e进队操作是先根据上述公式求出队尾指针rearl将rear1循环增1然后将元素e放置在rearl处出队操作是先将队头指针循环增1然后取出该位置的元素。设计本例的循环队列类CSqQueuel如下
#rear(self.frontself.count)%MaxSize
#队空:count0
#队满:countMaxsize
MaxSize 5
class CircleQueue: # 循环队列这种循环队牛逼之处就是:中元素个数代替尾指针,队满不存在空值,可存Maxsize个元素def __init__(self):self.data [None] * MaxSize # 初始空间self.front 0self.count 0def push(self, e): # 元素e进队rear(self.frontself.count)%MaxSize #得到队尾指针assert self.count!MaxSize # 判断队满rear(rear1)%MaxSize #和前面的循环队列一个道理self.data[rear] eself.count1def is_empty(self): # 判断队空return self.count 0def pop(self): # 元素出队assert not self.is_empty() # 先判断是否为空self.count-1self.front (self.front 1) % MaxSizereturn self.data[self.front]def gethead(self): # 获取头元素assert not self.is_empty()return self.data[(self.front 1) % MaxSize]def getsize(self): # 获取队列长度在front下标小于rear时size可以直接用rear-front获取但是如果边删边加导致rear小于front此方法出错rear (self.front self.count) % MaxSizereturn (rear - self.front MaxSize) % MaxSize #该式满足上叙所有情况def dispaly(self):qself.frontif self.count ! 0: #判断队空for i in range(self.getsize()):q (q1)%MaxSize #符合两种情况的式子print(self.data[q], end,)else:return Nonedef pushk(qu, k, e):n qu.getsize()if k 1 or k n 1: #k必须正常return Falseif k n:for i in range(1, n 1): #边删边进if i k: #插个队它插完后面的再边删边进qu.push(e)x qu.pop()qu.push(x)e1se: qu.push(e)return Truedef popk(qu, k):n qu.getsize()assert 1 k nfor i in range(1, n 1): #和上面的思想一样x qu.pop()if i ! k:qu.push(x)else:e x # 取第k个出队的元素return eif __name____main__:hh CircleQueue()# print(hh.is_empty())# hh.push(0)# hh.push(1)# hh.push(2)# hh.push(3)# print(hh.getsize())# hh.dispaly()
# True
# 4
# 0, 1, 2, 3,
# Process
# finished
# with exit code 0
# #当rearfront时
# hh.push(3)
# hh.push(4)
# hh.push(5)
# hh.push(6)
# hh.pop()
# hh.pop()
# hh.pop()
# hh.push(7)
# hh.push(8)
# print(hh.getsize())
# hh.dispaly()
# 3
# 6,7,8,
# Process finished with exit code 0