📜  修改链表内容(1)

📅  最后修改于: 2023-12-03 14:50:01.142000             🧑  作者: Mango

修改链表内容

在编程过程中,我们经常需要对链表中的节点进行修改操作。本文将介绍如何在链表中修改节点的值和指针。

修改节点值

链表的节点通常包含两个部分:数据和指针。我们可以通过访问节点的数据部分来修改节点的值。

下面是一个示例代码:

class Node:
    def __init__(self, val=None):
        self.val = val
        self.next = None
        
class LinkedList:
    def __init__(self):
        self.head = None
    
    def append(self, val):
        if not self.head:
            self.head = Node(val)
            return
        
        cur = self.head
        while cur.next:
            cur = cur.next
        cur.next = Node(val)
        
    def print_list(self):
        cur = self.head
        while cur:
            print(cur.val, end=" ")
            cur = cur.next
        print()
        
linked_list = LinkedList()
linked_list.append(1)
linked_list.append(2)
linked_list.append(3)
linked_list.print_list()

# 修改第二个节点的值
cur = linked_list.head.next
cur.val = 4
linked_list.print_list()

上述代码中,我们创建了一个单向链表,并向其中添加了三个节点。最后我们修改了第二个节点的值,并打印出链表中的节点值。

输出结果为:

1 2 3 
1 4 3
修改节点指针

我们还可以通过修改节点的指针来在链表中移动节点的位置或者删除某个节点。

下面是一个示例代码:

class Node:
    def __init__(self, val=None):
        self.val = val
        self.next = None
        
class LinkedList:
    def __init__(self):
        self.head = None
    
    def append(self, val):
        if not self.head:
            self.head = Node(val)
            return
        
        cur = self.head
        while cur.next:
            cur = cur.next
        cur.next = Node(val)
        
    def remove(self, val):
        if not self.head:
            return
        
        if self.head.val == val:
            self.head = self.head.next
            return
        
        cur = self.head
        while cur.next:
            if cur.next.val == val:
                cur.next = cur.next.next
                return
            cur = cur.next
            
    def print_list(self):
        cur = self.head
        while cur:
            print(cur.val, end=" ")
            cur = cur.next
        print()
        
linked_list = LinkedList()
linked_list.append(1)
linked_list.append(2)
linked_list.append(3)
linked_list.print_list()

# 移除第二个节点
linked_list.remove(2)
linked_list.print_list()

上述代码中,我们创建了一个单向链表,并向其中添加了三个节点。最后我们移除了第二个节点,并打印出链表中的节点值。

输出结果为:

1 2 3 
1 3
总结

在链表中修改节点的值和指针都是很常见的操作。我们可以通过访问节点的数据部分来修改节点的值,并通过修改节点的指针来移动节点的位置或者删除某个节点。