本节主要介绍了顺序单向循环队列的形成、基本操作的执行过程以及具体的代码展现。
以下是具体的代码展现:
#单向循环顺序顺序队列
#一共有两个指针front与rear,在单项循环队列里,front指针指向的那个结点为空
#单项循环顺序队列是有序号的
Maxsize=100
class CSqQueue:
def __init__(self):
self.data=[None]*Maxsize
self.front=0
self.rear=0
def empty(self):#单项循环顺序队列的空的条件是front和rear指针指向同一个结点
return self.front==self.rear
#除了判断空的时候序号只要相等就行,其他添加元素,删除元素,判断为满(这里就是assert (self.rear+1)%Maxsize!=self.front),获取头结点,都需要结点判断循环操作
def push(self,e):#添加结点
assert (self.rear+1)%Maxsize!=self.front#试探法,再前进一位两个指针就指向同一个结点
self.rear=(self.rear+1)%Maxsize#添加元素的操作为rear指针后移一位,然后rear指向的data域赋值
self.data[self.rear]=e
def pop(self):#删除元素
assert not self.empty()
self.front=(self.front+1)%Maxsize#删除元素的操作为front指针后移一位,然后返回现在front指针指向结点的data域
return self.data[self.front]
def gethead(self):#获取头结点
assert not self.empty()
head=(self.front+1)%Maxsize#用head指针指向front指针的后一位
return self.data[head]