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

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

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

全部评论

相关推荐

不愿吃饼的变色龙很感性:89k,那你得年薪1000w多
点赞 评论 收藏
分享
数学转码崽:一直给我推,投了又不理,理了又秒挂
点赞 评论 收藏
分享
独玖:同二本,建议咱俩一起重开
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务