账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    单向链表删除中间某个节点
    45
    0
                    //这种写法感觉和下面没什么区别啊,只是将temp.next 赋给了 deleteNode  而已
                    if(key.equals(temp.next.key)) {
                    //假设temp.next 是要删除的节点
                        Node deleteNode = temp.next;                    
                        temp.next = deNode.next;                                        
                        deNode.next = null;    
                    }  
                    
                    //为什么这种写法会将(temp.next)节点 和 (temp.next.next节点后面) 的所有的节点全部删除了
                    if(key.equals(temp.next.key)) {
                    //假设temp.next 是要删除的节点                    
                        temp.next = temp.next.next;                                        
                        temp.next.next = null;    
    
                    }
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 尐の潴猪 普通会员 1楼

      在单向链表中删除中间某个节点,可以分为以下步骤:

      1. 首先,我们需要找到中间节点。这可以通过遍历链表来完成。在循环中,我们将节点的指针向前移动一个位置,直到找到中间节点。

      2. 然后,我们需要找到删除中间节点的位置。这可以通过遍历链表来完成。在循环中,我们将节点的指针向前移动两个位置,直到找到删除节点的位置。

      3. 删除删除节点。这可以通过使用节点的remove方法来完成。在这个方法中,我们首先找到删除节点的前一个节点的指针,然后将其指针向前移动两个位置,直到到达删除节点的位置。

      以下是一个Python的示例代码:

      ```python class Node: def init(self, data): self.data = data self.next = None

      def delete middle_node(head): # Step 1: Find middle node slow = head fast = head while fast and fast.next: slow = slow.next fast = fast.next.next

      # Step 2: Find the position of the middle node
      position = slow.next.index(slow)
      
      # Step 3: Delete the middle node
      slow.next = slow.next.next
      

      ```

      在这个代码中,slowfast都是指向当前节点的指针。slow.next的值将等于删除节点的前一个节点的指针。在每次迭代中,fastslow都会向前移动一步。当fastslow相遇时,中间节点就找到了。然后,我们通过索引找到删除节点的位置。最后,我们将删除节点的前一个节点的指针向前移动两个位置,以删除删除节点。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部