アルゴリズムと構造-単一リンクリスト

説明

每个节点中包含Item和Next
单链表中,每个节点中,Item存储资料,Next存放下一个节点的地址,最后一个节点Next为None
其中head变量指向第一个节点地址,p1和p变量表示指向,类似指针的作用

ここに画像の説明を挿入

#创建一个节点
class singleNode(object):
	def __init__(self,item=None):   
		self.item=item       
		self.next=None
#创建一个链表
class list_table(object):   
	def __init__(self,node=None):
		self.__head=node
#链表是否为空
	def is_empty(self): 
		return self.__head==None
#链表长度
	def length(self):
		p=self.__head
		count=0
		while p!=None:
			p=p.next
			count+=1
		return count
#遍历整个链表
	def travel(self):
		p=self.__head
		while p!=None:
			print(p.item,end=' ')
			p=p.next
#链表尾部添加元素
	def append(self,item):
		node=singleNode(item)
		if self.is_empty():
			self.__head=node
		else:
			p=self.__head
			while p.next!=None:
				p=p.next
          	p.next=node
#链表头部添加元素   
	def add(self,item):
		node=singleNode(item)
		if self.is_empty():         
			self.__head=node
		else:
			p=self.__head
			self.__head=node
			node.next=p
#指定位置添加元素
	def insert(self,pos,item):
	        node=singleNode(item)
	        if self.is_empty():
	        	self.add(item)
	        else:
	            if pos<1:
			self.add(item)
	            elif pos>self.length()-1:
			self.append(item)
	            else:
	            	count=0
	                p1 = None
	                p=self.__head
	                while count<pos:
	                    count+=1
	                    p1=p
	                    p=p.next
	                node.next=p
	                p1.next=node
#search查找节点是否存在
	def search(self,item):
		 if self.is_empty():
			return '链表不存在'
		else:
			p=self.__head
			while p!= None:
				if p.item == item:
					return f'{item}存在'
				p=p.next
			return f'{item}不存在'
#remove删除节点
	def remove(self,item):
	        if self.is_empty():
	            return '链表不存在'
	        else:
	            p = self.__head
	            p1=None
	            while p.next != None:
	                p1 = p
	                if p.item==item :
	                    self.__head = p.next
	                    return
	                else:
	                    p=p.next
	                    if p.item==item:
	                        p1.next=p.next
	                        return
	        return print(f'{item}不存在链表中')		

おすすめ

転載: blog.csdn.net/qq_37697566/article/details/103045602