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

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

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

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

class singleLinkedList(object):
    def __init__(self, node=None):
        self._head = node

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

    def append(self, item):
        pass

    def add(self, item):
        pass

    def insert(self, item, dest):
        """
        :param dest: 目标节点
        :param item: 值
        :return: 无
        """
        if self.is_empty():
            return None
        else:
            cur = self._head
            node = Node(item)
            while cur:
                if cur.item == dest :
                    node.next = cur.next
                    cur.next = node
                    return
                cur = cur.next
        return None

    def remove(self, item):
        """
        :param dest: 目标节点
        :param item: 值
        :return: 无
        """
        cur = self._head
        pre = None
        while cur:
            if cur.item == item:
                if cur == self._head:
                    self._head = cur.next
                else:
                    pre.next = cur.next
                return
            pre = cur
            cur = cur.next

    def traversal(self):
        cur = self._head
        while cur:
            print(cur.item, end=' ')
            cur = cur.next

if __name__ == "__main__":
    lst = list(map(int, input().split()))
    sll = singleLinkedList(Node(lst[1]))
    for i in range(1, len(lst)//2):
        sll.insert(lst[i * 2], lst[i * 2 + 1]) 
    sll.remove(lst[-1])
    sll.traversal()

"""
5 2 3 2 4 3 5 2 1 4 3
"""

全部评论

相关推荐

zYvv:双一流加大加粗再标红,然后广投。主要是获奖荣誉不够,建议开始不用追求大厂,去别的厂子刷下实习。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-24 13:40
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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