说明
每个节点中包含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
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}不存在'
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}不存在链表中')