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

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

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

class Node:  # 节点
    def __init__(self, v):
        self.v = v
        self.next = None


class SingleLinkList:
    def __init__(self, v):  # 初始化的时候定义头部
        self.head = Node(v)  # 头部是一个节点,不是值

    def add(self, v1, v2):
        """
        增加节点: 寻找到v2在它后边插入v1
        :return: 修改链表
        """
        n = Node(v1)
        cur = self.head
        while cur:
            if cur.v == v2:
                n.next = cur.next
                cur.next = n
                break
            else:
                cur = cur.next

    def delete(self, v):
        cur = self.head
        pre = None
        while cur:
            if cur.v == v:
                if not pre:  # 删除head
                    self.head = cur.next
                else:  # 非head
                    pre.next = cur.next
                break
            else:
                pre = cur
                cur = cur.next

    def show(self):
        cur = self.head
        while cur:
            print(cur.v, end=" ")
            cur = cur.next
        print()


if __name__ == "__main__":
    while True:
        try:
            cmd = list(map(int, input().split()))
            L = SingleLinkList(cmd[1])
            lst = cmd[2:-1]
            for i in range(int(len(lst) / 2)):
                L.add(lst[2 * i], lst[2 * i + 1])
            L.delete(cmd[-1])
            L.show()

        except:
            break

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-20 20:30
工作没了,落户没了,什么都没了
梦想是成为七海千秋:是因为什么原因呀,如果是因为导师恶意卡你就和他爆了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
陈逸轩1205:才105 哥们在养生呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务