题解 | #从单向链表中删除指定值的节点#

从单向链表中删除指定值的节点

https://www.nowcoder.com/practice/f96cd47e812842269058d483a11ced4f

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

    def setNext(self, node):
        self.next = node
    
class LinkedList:
    def __init__(self):
        self.head = None

    def add(self, data):
        node = Node(data)
        if self.head:
            node.next = self.head
            self.head = node
        else:
            self.head = node
    
    def insert_after_value(self, data, value):
        new_node = Node(data)
        cur = self.head
        while cur:
            if cur.data == value:
                new_node.setNext(cur.next)
                cur.next = new_node
                break
            else:
                cur = cur.next

    def remove(self, data):
        cur = self.head
        pre = None
        while cur:
            if cur.data == data:
                if not pre:
                    self.head = None
                    return None
                else:
                    pre.next = cur.next
                    break
            else:
                pre = cur
                cur = cur.next

            

inp = input().split()

n = inp[0]
head = inp[1]
arr = inp[2:-1]
x = inp[-1]

new_link = LinkedList()
new_link.add(head)

for i in range(len(arr)-1):
    new_link.insert_after_value(arr[i], arr[i+1])

new_link.remove(x)

cur = new_link.head
while cur:
    print(cur.data, end=' ')
    cur = cur.next

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务