class LinkNode: #循环单链表结点类 def __init__(self,data=None): #构造函数 self.data=data #data属性 self.next=None #next属性 class CLinkList: #循环单链表类 def __init__(self): #构造函数 self.head=LinkNode() #头结点head self.head.next=self.head #构成循环的 def CreateListF(self, a): #头插法:由数组a整体建立循环单链表 for i in range(0,len(a)): #循环建立数据结点s s=LinkNode(a[i]) #新建存放a[i]元素的结点s s.next=self.head.next #将s结点插入到开始结点之前,头结点之后 self.head.next=s def CreateListR(self, a): #尾插法:由数组a整体建立循环单链表 t=self.head #t始终指向尾结点,开始时指向头结点 for i in range(0,len(a)): #循环建立数据结点s s=LinkNode(a[i]); #新建存放a[i]元素的结点s t.next=s #将s结点插入t结点之后 t=s t.next=self.head #将尾结点的next改为指向头结点 def geti(self, i): #返回序号为i的结 p=self.head #首先p指向头结点 j=-1 while (j<i): j+=1 p=p.next if p==self.head: break return p def Add(self, e): #在线性表的末尾添加一个元素e def getsize(self): #返回长度 p=self.head cnt=0 while p.next!=self.head: #找到尾结点为止 cnt+=1 p=p.next return cnt
时间: 2024-01-14 10:02:57 浏览: 103
单链表LinkList
好的,下面是代码的补全:
```
class LinkNode: # 循环单链表结点类
def __init__(self,data=None): # 构造函数
self.data = data # data属性
self.next = None # next属性
class CLinkList: # 循环单链表类
def __init__(self): # 构造函数
self.head = LinkNode() # 头结点head
self.head.next = self.head # 构成循环的
def CreateListF(self, a): # 头插法:由数组a整体建立循环单链表
for i in range(0,len(a)): # 循环建立数据结点s
s = LinkNode(a[i]) # 新建存放a[i]元素的结点s
s.next = self.head.next # 将s结点插入到开始结点之前,头结点之后
self.head.next = s
def CreateListR(self, a): # 尾插法:由数组a整体建立循环单链表
t = self.head # t始终指向尾结点,开始时指向头结点
for i in range(0,len(a)): # 循环建立数据结点s
s = LinkNode(a[i]) # 新建存放a[i]元素的结点s
t.next = s # 将s结点插入t结点之后
t = s
t.next = self.head # 将尾结点的next改为指向头结点
def geti(self, i): # 返回序号为i的结点
p = self.head # 首先p指向头结点
j = -1
while (j < i):
j += 1
p = p.next
if p == self.head:
break
return p
def Add(self, e): # 在线性表的末尾添加一个元素e
s = LinkNode(e) # 新建结点s
p = self.head # p指向头结点
while p.next != self.head: # 找到尾结点
p = p.next
p.next = s # 将s插入到尾结点之后
s.next = self.head
def getsize(self): # 返回长度
p = self.head
cnt = 0
while p.next != self.head: # 找到尾结点为止
cnt += 1
p = p.next
return cnt
```
阅读全文