《程序员面试金典》--删除链表中的某个元素(这个元素只能访问)
2015-09-17 15:52
567 查看
题目描述:
实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。
给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true
题目分析:
对于一个单向链表,如果给出其中一个节点的情况下,想把这个节点删除,删除该节点以后,还希望链表完整的,这个时候我们无法获取当前节点前面一个节点,只能获取其后面一个节点,如果把当前节点删除掉,那么就无法让链表完整,这个时候可以把当前节点后面的元素赋值给当前节点,让当前节点指向后面节点的下一个节点,然后删除后面节点,这样就相当于删除了当前节点。
特别注意:要删除的节点是尾节点时,则无法实现,所以这个要问清楚考官。
程序代码如下:
实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。
给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true
题目分析:
对于一个单向链表,如果给出其中一个节点的情况下,想把这个节点删除,删除该节点以后,还希望链表完整的,这个时候我们无法获取当前节点前面一个节点,只能获取其后面一个节点,如果把当前节点删除掉,那么就无法让链表完整,这个时候可以把当前节点后面的元素赋值给当前节点,让当前节点指向后面节点的下一个节点,然后删除后面节点,这样就相当于删除了当前节点。
特别注意:要删除的节点是尾节点时,则无法实现,所以这个要问清楚考官。
程序代码如下:
class Remove { public: bool removeNode(ListNode* pNode) { // write code here if(pNode==NULL||pNode->next==NULL) return false; pNode->val=pNode->next->val; ListNode* ppNode=pNode->next; pNode->next=ppNode->next; delete ppNode; return true; } };
相关文章推荐
- 黑马程序员---OC中类与对象 语法杂记
- 嵌入式C语言面试题
- 近来C#面试题目之不会系列
- 黑马程序员---浅析 宏
- 电话邦php面试题及答案
- 黑马培训---分享点干货一 IOS面试常见的专业问题
- 2015美团校招面试总结
- 从通信的角度分析一下微信推送的长连接的弊端——网易面试题
- 从通信的角度分析一下微信推送的长连接的弊端——网易面试
- iOS程序员必须知道的Android要点
- 每个程序员都应该了解的内存知识
- 心得
- 前端程序员必上的8个优秀的中文前端设计网站
- 黑马程序员——IO流(字符流)
- 黑马程序员——IO流(字节流)
- 《黑马程序员》Java 反射机制
- 写给自己的面试答案
- 黑马程序员——Java之IO流(1)
- 黑马程序员——Java之IO流(2)
- 黑马程序员——Java之多线程(2)