面试题13-o(1)时间内删除链表结点

本文介绍了一种在O(1)时间复杂度下删除链表中指定节点的算法实现。该算法通过特殊处理尾节点和非尾节点的情况,有效地完成了删除操作。文中还提供了具体的Python代码实现,并通过实例演示了如何使用该算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Tue Feb 28 09:10:19 2017
  4. @author: zzpp220
  5. """
  6. class LinkList:
  7.    def __init__(self,val,link=None):
  8.        self.val=val
  9.        self.link=link
  10.    def __del__(self):
  11.        self.link=None
  12.        self.val=None
  13. class DelNode:  
  14.    
  15.    def delNodeInO_1(self,link_head,toBeDeled):
  16.        if not link_head or not toBeDeled or(link_head.link==None and link_head!=toBeDeled):#special codition
  17.            return False
  18.        if link_head.val and link_head.link==None and link_head==toBeDeled:
  19.            link_head.__del__()
  20.            return 'Done'
  21.        if toBeDeled.link==None:##end node
  22.            pNode=link_head
  23.            while pNode.link!=toBeDeled:
  24.                pNode=pNode.link
  25.            pNode.link=None
  26.            toBeDeled.__del__()
  27.        else:##non-end node
  28.            pnext=toBeDeled.link
  29.            toBeDeled.val=pnext.val
  30.            toBeDeled.link=pnext.link
  31.            pnext.__del__()
  32. if __name__=="__main__":
  33.    l1=LinkList(4)
  34.    l2=LinkList(3,l1)
  35.    l3=LinkList(2,l2)
  36.    l4=LinkList(1,l3)
  37.    solution=DelNode()
  38.    print solution.delNodeInO_1(l1,None)#(None,l4),(l4,l4),(l4,l1),(l1,l1),(l1,None)
  39.    print l4.val,l4.link.val,l4.link.link.val            
  40.            


附件列表

 

转载于:https://www.cnblogs.com/zzxx-myblog/p/6481239.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值