一道关于链表的面试题
Add comments
15,168 Views
三 242011
在公司的时候无意中听到的,据说技术面的时候屡试不爽。题目如下:
一个单向链表,不知道head指针,只有当前节点的指针current,如何删除当前节点?
一般对链表的操作都要从head指针开始,操作当前节点必须有previous指针。这个题目需要独辟蹊跷:
解法:以删除next节点的方法变相删除current节点。具体做法就是将next节点的数据拷贝到current节点,删除next节点,即将current节点的next指针指向next节点的next节点。
问题:
1)如果current节点是tail节点,这种方法就不好使了。
2)如果其他地方有对next节点的引用,该引用会出现错误(不同语言可能情况不一样,比如java和c++)。
没了。。。
第一种情况应该进行错误处理。
第二种情况就应该考虑数据结构和算法的整体性了。
现在都生疏了,脑子里完全想不到该怎么解……
又学到一点:难倒自己的不是智慧,而是思维方式。
有没有办法避免出现的那两个问题呢?
有难度。而且再讨论就不属于数据结构的范畴了。深入了解指针和对象可能会对上述问题有帮助。
有意思。。我决定去研究下~