[LintCode]174.删除链表中倒数第n个节点
来源:互联网 发布:中控矩阵 编辑:程序博客网 时间:2024/06/06 02:57
给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。
注意事项:链表中的节点个数大于等于n
样例
给出链表1->2->3->4->5->null和 n = 2.
删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.
思路:题目是在在“[LintCode]166.链表倒数第n个节点”的基础上增加功能,我们已经有了寻找倒数第n个节点的方法。删除节点k参考“
[LintCode]452.删除链表中的元素
”,关键在于要找到k的前一个节点,其次就是特殊情况的判断:要删除的节点在头部,要删除的节点在中间、尾部/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * this->val = val; * this->next = NULL; * } * } */class Solution {public: /** * @param head: The first node of linked list. * @param n: An integer. * @return: The head of linked list. */ ListNode *removeNthFromEnd(ListNode *head, int n) { if(head==NULL||n<1){ return NULL; } ListNode *p=head; ListNode *pre=head;//倒数第n个节点 while(--n){ //快指针p提前n个单元 if(p->next==NULL){ return NULL; }else{ p=p->next; } } ListNode *t; while(p->next){ p=p->next; t = pre; //标记倒数第n个节点的前一个节点 pre=pre->next; } //找到倒数第n个节点pre后,删除节点 //关键判断:如果只有一个节点,倒数第n个就是第一个,删除后链表为空 if ( pre == head){ head = head -> next; //要删除的节点在头部 } else { t->next = t->next->next;//要删除的节点在中间、尾部,遍历链表删除 } return head; }};
阅读全文
0 0
- Lintcode 174.删除链表中倒数第n个节点
- [LintCode]174.删除链表中倒数第n个节点
- lintCode-删除链表中倒数第n个节点
- lintcode-删除链表中倒数第n个节点-174
- LintCode- 删除链表中倒数第n个节点
- 删除链表中倒数第n个节点(LintCode)
- LintCode 删除链表中倒数第n个节点
- lintcode ----删除链表中倒数第n个节点
- LintCode 删除链表中倒数第n个节点
- 删除链表中倒数第n个节点-LintCode
- lintcode——删除链表中倒数第n个节点
- LintCode-删除链表中倒数第n个节点
- lintcode 174 删除链表中倒数第n个节点
- LintCode : 删除链表中倒数第n个节点
- LintCode 删除链表中倒数第n个节点
- 删除链表中倒数第n个节点-LintCode
- lintcode删除链表中倒数第n个节点
- Lintcode删除链表中倒数第n个节点
- Hibernate学习之---传统的映射文件
- Thinkphp 框架开发环境搭建
- 编程练习2——02—将整数转换为相应的一个字符数组
- STL中string类的使用
- 百度之星度度熊与邪恶大魔王(完全背包)
- [LintCode]174.删除链表中倒数第n个节点
- 2017/8/5
- js中onclick事件用“return”开头+方法名的返回值
- 完全背包+最值问题
- 严格模式与混杂模式
- LeetCode:Reverse Integer
- Android 手势锁的实现 让自己的应用更加安全吧
- 第七弹——超高效率的数据库redis
- HDU 2044 一只小蜜蜂... (递推)