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

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

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

class ListNode:
    def __init__(self, val):
        self.val = val
        self.next = None


class LinkList:
    def __init__(self):
        self.head = ListNode(0)

    def is_empty(self):
        return self.head is None

    #循环创建链表
    def create_linklist(self, nodes):
        for node in nodes:
            cur = self.head
            tmp = ListNode(node[0])
            while cur:#在插入节点时分两种情况,尾节点为空或不为空
                if cur.val == node[1] and cur.next:
                    tmp.next = cur.next
                    cur.next = tmp
                    break
                elif cur.val == node[1] and not cur.next:
                    cur.next = tmp
                    break
                cur = cur.next

    def delete(self, value):
        cur = self.head
        if self.is_empty():
            return
        elif self.head.val == value and self.head.next:
            pre = self.head
            self.head = self.head.next
            pre.next = None
            return
        elif self.head.val == value and not self.head.next:
            self.head = None
            return
        elif not self.head.next:
            return
        else:
            while cur.next:
                if cur.next.val == value and cur.next.next:
                    cur.next = cur.next.next
                elif cur.next.val == value and not cur.next.next:
                    cur.next = None
                cur = cur.next

    def print_linklist(self):
        cur = self.head
        if not cur:
            print(None)
        nodes = []
        while cur:
            nodes.append(str(cur.val))
            cur = cur.next
        print(" ".join(nodes))


ll = LinkList()
lt = list(map(int, input().split()))
nodn, headval, delval = lt[0], lt[1], lt[-1]
nodes = []
for i in range(2, len(lt) - 1, 2):
    nodes.append((lt[i], lt[i + 1]))
ll.head.val = headval
ll.create_linklist(nodes)
ll.delete(delval)
ll.print_linklist()

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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