class Node(object):
def __init__(self,elem):
self.elem=elem
self.next=None
class SingleLinkCircle(object):
def __init__(self,node=None):
self.__head=node
def is_empty(self):
return self.__head is None
def length(self):
if self.is_empty():
return 0
else:
cur=self.__head
count=1
while cur.next!=self.__head:
cur=cur.next
count+=1
return count
def add(self,item):
node=Node(item)
if self.__head==None:
self.__head=node
node.next=node
else:
node.next=self.__head
self.head=node
def append(self,item):
node=Node(item)
if self.__head==None:
self.__head=node
node.next=node
else:
cur=self.__head
while cur.next!=self.__head:
cur=cur.next
cur.next=node
node.next=self.__head
def travel(self):
if self.is_empty():
print("empty")
else:
cur=self.__head
while cur.next!=self.__head:
print(cur.elem,end=" ")
cur=cur.next
print(cur.elem)
def insert(self,pos,item):
node=Node(item)
if pos<=0:
self.add(node)
elif pos>=self.length():
self.append(node)
else:
cur=self.__head
count=0
while count<pos-1:
cur=cur.next
count+=1
node.next=cur.next
cur.next=node
def remove(self,item):
if self.is__empty():
print("empty")
return
else:
cur=self.__head
pre=cur
while cur.next!=self.__head:
if cur.elem==item:
pre.next=cur.next
return
pre=cur
cur=cur.next
if cur.elem==item:
pre.next=self.__head
return
print("no such element")
return
s=SingleLinkCircle()
s.add("s")
s.append("t")
s.insert(1,"a")
s.append("x")
print(s.length())
s.travel()
python 单向循环链表
最新推荐文章于 2023-07-26 09:08:13 发布