有趣的面试题 1-1 单向链表

已知内存中存在一个单向链表,表示方法为  1 2 3  .... n

现在只给你一个 节点m ,  只知道节点m一定在这个单向链表上

要求是删除节点m

不知道单向链表的起点在哪里

 

常规思路,是找到m的前一个节点 m-1,然后将 m-1 指向m的下一个数据 m+1 ,

但是这里的问题是, 这是一个单向链表,

根据m根本无法查到 m-1

 

所以要换一种思路思考

所谓的删除操作可以换一种方式来做,

知道m 那么就知道m+1 m+2....n

那么将m+1的值拷贝到 m ,将m的下一个元素指向m+2

那么在内容上就删除了m这个节点

 

当然这个删除是不完美的

他最大的难度是要开阔你的思路,不要老是局限于已经有的知识,

先尝试解决问题,再解决实际应用中引发的问题

 

PS1:如果存在外部数据指向m+1的地址 这个时候会有问题

PS2:如果正好是最后一个节点就over了

如果还有其他的问题 请大家补充

 

 

posted on 2010-11-15 14:06  听说读写  阅读(587)  评论(3编辑  收藏  举报

导航