class Node():
def __init__(self,elem):
self.elem = elem
self.next = None
class SingleLinkList():
# 创建头结点,有默认参数
def __init__(self, head=None):
self.__head = head
# 判断链表是否为空
def is_empty(self):
return self.__head.next == None
# 返回链表长度
def length(self):
p = self.__head.next
length = 0
while p!=None:
length += 1
p = p.next
return length
# 遍历链表
def travel(self):
if self.is_empty():
return
p = self.__head.next
while p!= None:
print(p.elem,end=" ")
p = p.next
# 头插法创建单链表
def add(self,item):
node = Node(item)
if self.is_empty():
self.__head.next = node
else:
p = self.__head
node.next = p.next
p.next = node
# 尾插法创建单链表
def append(self, item):
# 根据传进来的数字创建新节点
node = Node(item)
if self.__head.next==None:
self.__head.next = node
else:
p = self.__head
while p.next!=None:
p = p.next
p.next = node
# 在某一位置插入节点
def insert(self,pos,item):
if pos<0:
print()
print("error")
return
elif pos>=self.length():
self.append(item)
else:
index = 0
node = Node(item)
p = self.__head.next
while p!=None:
index = index + 1
if index==pos:
node.next = p.next
p.next = node
p = p.next
# 根据位置删除节点,考虑特殊情况
def remove(self,item):
if self.is_empty() or item>self.length():
print("该位置没有节点")
else:
p = self.__head
pos = 0
while p!=None:
pos = pos+1
# 处理删除尾部节点
if item==self.length()and pos ==self.length():
p.next = None
break
elif pos==item:
p.next = p.next.next
break
else:
p = p.next
# 查找指定位置的节点
def search(self,item):
if item<=0 or item>self.length():
print("该位置越界")
return
else:
p = self.__head.next
pos = 0
while p!=None:
pos +=1
if pos==item:
return p.elem
p = p.next
if __name__=='__main__':
# 创建一个节点
head = Node(0)
singlelinklist = SingleLinkList(head)
singlelinklist.append(1)
singlelinklist.append(2)
singlelinklist.append(3)
singlelinklist.add(4)
singlelinklist.add(5)
singlelinklist.add(6)
singlelinklist.add(7)
print(singlelinklist.is_empty())
print(singlelinklist.length())
singlelinklist.travel()
singlelinklist.insert(9,10)
print()
singlelinklist.travel()
singlelinklist.insert(-1,44)
print("删除节点测试")
singlelinklist.remove(7)
singlelinklist.travel()
print()
print(singlelinklist.search(1))
python数据结构之单链表
最新推荐文章于 2022-08-23 20:23:16 发布