class LinkedListNode():
def __init__ (self, value = None, next = None):
self.value = value
self.next = next
# 单链表类
class SingleLinkedList():
# 初始化
def __init__ (self):
self.head = None
# 判断链表是否为空
def is_empty(self):
if self.head is None:
return True
# 创建一个新链表节点
def add(self,new_value):
node = LinkedListNode(new_value,self.head)
self.head = node
# 增加一个新的结点
def append(self,new_value):
node = LinkedListNode(new_value)
if self.is_empty():
self.head = node
else:
node.next = self.head
self.head = node
# 获取链表长度
def length(self):
cur = self.head
count = 0
while cur is not None:
count = count + 1
cur = cur.next
return count
# 按照指定位置插入新的结点
def insert(self,pos,new_value):
node = LinkedListNode(new_value)
if pos <= 0:
self.add(new_value)
elif pos > self.length()-1:
self.append(new_value)
else:
node = LinkedListNode(new_value)
cur = self.head
count = 0
while count < pos-1:
count = count+1
cur=cur.next
node.next = cur.next
cur.next = node
# 删除链表中的某一个值(所有)
def remove(self,old_value):
cur = self.head
pre = None
while cur is not None:
if cur.value == old_value:
if not pre:
self.head = cur.next
else:
pre.next = cur.next
cur = cur.next
else:
pre = cur
cur = cur.next
# 遍历整个链表,并将其值存在一个列表中
def travel(self):
cur = self.head
ls = []
while cur is not None:
ls.append(cur.value)
cur =cur.next
return ls
# 搜索某个值是否存在于当前链表中
def search(self, s_value):
cur = self.head
while cur is not None:
if cur.value == s_value:
return True
else:
cur = cur.next
return False
newL = SingleLinkedList()
newL.add(0)
print(newL.head.value)
0
newL.append(1)
newL.append(2)
newL.append(3)
print(newL.travel())
[3, 2, 1, 0]
newL.remove(1)
print(newL.travel())
[3, 2, 0]
print(newL.length())
3
print(newL.search(2))
print(newL.search(1))
True
False
newL.insert(1,10)
print(newL.travel())
[3, 10, 2, 0]