python 单向循环链表

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值