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

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

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

import sys

class Node(object):
    def __init__(self, value, next = None ) -> None:
        self.value = value
        self.next = next

class LinkList:
    def __init__(self, node) -> None:
        self.head = node

    # 根据值 插入节点
    def addNode(self, add_value, index_value):
        cur = self.head
        nex = None
        while cur:
            if cur.value == index_value:
                nex = cur.next
                cur.next = Node(add_value)
                cur.next.next = nex
                break
            else:
                cur = cur.next

    # 删除节点
    def removeNode(self, remove_value):
        cur = self.head
        while cur:
            if cur.next.value == remove_value:
                # 绝了这里,cur = cur.next.next。卡了十几分
                cur.next = cur.next.next 
                break
            else:
                cur = cur.next

    # 遍历链表
    def getNode(self):
        cur = self.head
        while cur:
            print(cur.value, end= " ")
            cur = cur.next
            
if __name__ == "__main__":
    nums = list(map(int, input().split()))

    # 操作的值列出来
    len_value, head_value, remove_value = nums[0], nums[1], nums[-1]
    values = nums[2:-1]
    add_values = values[0::2]
    index_values = values[1::2]

    # print(),打断点看一下是否按照所想
    # 开始创建节点和链表的对象
    head_node = Node(head_value)
    link = LinkList(head_node)

    # 遍历添加的值、添加节点到链表
    for i in range(0,len_value-1):
        link.addNode(add_values[i], index_values[i])
    
    # 删除和打印节点
    link.removeNode(remove_value)
    link.getNode()






全部评论

相关推荐

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