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

  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