链表(Linked List):链表是一种常见的数据结构,由一系列节点组成,每个节点包含数据部分和一个指向下一个节点的指针。链表可以分为单链表、双链表和循环链表等。
print方法:通常用于打印输出链表中的所有元素。
append方法:通常用于在链表的末尾添加一个新的节点。
print
方法通常涉及从头节点开始遍历链表,直到遇到null
(即链表的末尾)。在遍历过程中,可以访问每个节点的数据并进行打印。
示例代码:
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def print_list(self):
current = self.head
while current:
print(current.data, end=" -> ")
current = current.next
print("None")
# 示例用法
llist = LinkedList()
llist.head = Node(1)
second = Node(2)
third = Node(3)
llist.head.next = second
second.next = third
llist.print_list() # 输出: 1 -> 2 -> 3 -> None
append
方法用于在链表的末尾添加一个新的节点。为了找到链表的末尾,需要从头节点开始遍历,直到找到next
指针为null
的节点。
示例代码:
class LinkedList:
# ...(前面的代码相同)
def append(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
return
last = self.head
while last.next:
last = last.next
last.next = new_node
# 示例用法
llist = LinkedList()
llist.append(1)
llist.append(2)
llist.append(3)
llist.print_list() # 输出: 1 -> 2 -> 3 -> None
问题1:链表遍历时出现空指针异常
原因:在遍历过程中,可能访问到了null
节点。
解决方法:在遍历过程中,始终检查当前节点是否为null
,避免访问空指针。
def print_list(self):
current = self.head
while current:
print(current.data, end=" -> ")
current = current.next
print("None")
问题2:append方法无法正确添加节点
原因:可能是因为没有正确找到链表的末尾节点。
解决方法:确保在遍历过程中正确找到next
指针为null
的节点,并将新节点添加到该节点的next
指针上。
def append(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
return
last = self.head
while last.next:
last = last.next
last.next = new_node
希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云