题解 | #删除链表的节点#

删除链表的节点

http://www.nowcoder.com/practice/f9f78ca89ad643c99701a7142bd59f5d

查看北大陈斌老师的数算课程模仿写的。迭代遍历。

找到要移除的节点current,需要区分两种情况:current是首个节点;或者是位语链条中间的节点。

思路流程:

step 1:准备两个指针遍历链表,一个指针指向当前要遍历的元素,另一个指针指向该元素的前序节点,便于获取它的指针。第一个节点给它加一个None节点作为前节点。

step 2:遍历链表,找到目标节点就停下,准备处理;如果没找到就继续找。

step 3:如果要删除的是首个节点,特殊处理一下;如果是中间节点,则断开连接,指向后一个。

step 4:返回时返回原来输入的链表即可。(本来有点小疑惑为什么返回的是head,后面理解了是因为一开始用head记录了要返回的结果的表头。)

# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param head ListNode类 
# @param val int整型 
# @return ListNode类
#
class Solution:
    def deleteNode(self , head: ListNode, val: int) -> ListNode:
        current=head
        previous=None
        found= False
        while not found:
            if current.val ==val:
                found=True
            else:
                previous=current
                current=current.next
        if previous==None:#要移除的节点current就是表头节点时
            head=current.next
        else:
            previous.next=current.next
        return head
全部评论

相关推荐

09-04 16:04
东北大学 Java
牛牛我呀想要offe...:筛选未通过有可能是测评挂了
投递京东等公司10个岗位
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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