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 14:05:00 浏览: 59
链表结点的C++描述-单链表的实现-简单操作
这段代码是关于循环单链表的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,完成在循环单链表末尾添加元素的操作。
如果您需要使用其他方法,可以根据需要进行修改和完善,以满足您的需求。
阅读全文