"""
单向链表
"""
class LinkedListNode():
def __init__(self, value=None, next=None):
self.value = value
self.next = next
# 单向链表
class SingleLink:
def __init__(self):
self.head = None
# 判断链表是否为空
def is_empty(self):
if self.head is None:
return True
else:
return False
def travel(self):
cur = self.head
while cur is not None:
print(cur.value, end="")
cur = cur.next
print()
# 链表长度
def length(self):
cur = self.head
count = 0
while cur is not None:
count += 1
cur = cur.next
return count
# 从链表头部插入一个新的节点
def add(self, new_value):
node = LinkedListNode(new_value)
node.next = self.head
self.head = node
# 从链表尾部插入一个新的节点
def append(self, new_value):
node = LinkedListNode(new_value)
if self.is_empty():
self.head = node
else:
cur = self.head
while cur.next is not None:
cur = cur.next
cur.next = node
# 在指定位置插入元素
def insert(self, pow, new_value):
if pow <= 0:
self.add(new_value)
elif pow >= self.length():
self.append(new_value)
else:
cur = self.head
count = 0
while count < (pow - 1):
cur = cur.next
count += 1
node = LinkedListNode(new_value)
node.next = cur.next
cur.next = node
# 删除节点
def remove(self, value):
cur = self.head
pre = None
while cur is not None:
if cur.value == value:
if cur == self.head:
self.head = cur.next
else:
pre.next = cur.next
return
pre = cur
cur = cur.next
# 查找节点是否存在
def search(self, item):
cur = self.head
while cur is not None:
if cur.value == item:
return True
cur = cur.next
return False
link = SingleLink()
print(link.length())
link.append(1)
link.travel()
link.add(2)
link.travel()
link.append(3)
link.travel()
link.insert(2, 5)
link.travel()
link.remove(3)
print(link.length())
python实现单向链表的基本操作
最新推荐文章于 2021-07-06 08:25:16 发布