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-02-11 08:05:00 浏览: 63
这段代码是关于循环单链表的Python实现,其中包括了LinkNode类和CLinkList类。
LinkNode类是循环单链表结点类,包括data和next两个属性,用于存储数据和指向下一个结点的指针。
CLinkList类是循环单链表类,包括head属性,用于指向头结点,以及一些方法,如CreateListF、CreateListR、geti、Add和getsize等,用于创建、查询、添加和获取长度等操作。
其中,CreateListF方法是头插法,用于由数组a整体建立循环单链表;CreateListR方法是尾插法,用于由数组a整体建立循环单链表;geti方法是返回序号为i的结点;Add方法是在线性表的末尾添加一个元素e;getsize方法是返回循环单链表的长度。
如果您想要使用其中的Add方法,可以在该方法中添加以下代码:
```python
p = self.head
while p.next != self.head:
p = p.next
s = LinkNode(e)
s.next = self.head
p.next = s
```
该代码会将新结点s添加到循环单链表的末尾,也就是尾结点p的后面,并使其指向头结点self.head,完成在循环单链表末尾添加元素的操作。
如果您需要使用其他方法,可以根据需要进行修改和完善,以满足您的需求。
相关问题
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
好的,下面是代码的补全:
```
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
```
class LinkNode: #单链表结点类 def __init__(self,data=None): #构造函数 self.data=data #data属性 self.next=None #next属性 class LinkList: #单链表类 def __init__(self): #构造函数 self.head=LinkNode() #头结点head self.head.next=None def CreateListF(self, a): #头插法:由数组a整体建立单链表 def CreateListR(self, a): #尾插法:由数组a整体建立单链表 def geti(self, i): #返回序号为i的结点 p=self.head j=-1 while (j<i and p is not None): j+=1 p=p.next return p def Add(self, e): #在线性表的末尾添加一个元素e def getsize(self): #返回长度 p=self.head cnt=0 while p.next is not None: #找到尾结点为止 cnt+=1 p=p.next return cnt
好的,那么接下来我会帮助您补齐这段代码的缺失部分。请注意,以下代码仅供参考,具体实现可能因情况而异,您可以根据自己的需求进行修改:
```python
class LinkNode: #单链表结点类
def __init__(self,data=None): #构造函数
self.data=data #data属性
self.next=None #next属性
class LinkList: #单链表类
def __init__(self): #构造函数
self.head=LinkNode() #头结点head
self.head.next=None
def CreateListF(self, a): #头插法:由数组a整体建立单链表
for i in range(len(a)):
node = LinkNode(a[i])
node.next = self.head.next
self.head.next = node
def CreateListR(self, a): #尾插法:由数组a整体建立单链表
p = self.head
for i in range(len(a)):
node = LinkNode(a[i])
p.next = node
p = node
def geti(self, i): #返回序号为i的结点
p = self.head
j = -1
while (j < i and p is not None):
j += 1
p = p.next
return p
def Add(self, e): #在线性表的末尾添加一个元素e
p = self.head
while p.next is not None:
p = p.next
node = LinkNode(e)
p.next = node
def getsize(self): #返回长度
p = self.head
cnt = 0
while p.next is not None: #找到尾结点为止
cnt += 1
p = p.next
return cnt
```
阅读全文