删除链表中倒数第n个节点
2016-01-16 18:24
369 查看
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) { // write your code here if(n<=0) return NULL; ListNode *dummynode = new ListNode(0); dummynode->next = head; ListNode *preDelete = dummynode; for(int i=0;i<n;i++){ if(head == NULL) return NULL; //节点个数必须大于n head = head->next; } while (head != NULL) { head = head->next; preDelete = preDelete->next; } preDelete->next = preDelete->next->next; return dummynode->next; } };思想是倒数第n个节点的确定是通过,两个指针(head和preDelete)之间距离为n(通过设置head,使head指针前进n个节点),所以当head指针指向最后一个节点时,preDelete指针指向的为倒数第n个节点,然后再利用preDelete->next = preDelete->next->next; 删除preDelete所指的节点。
相关文章推荐
- Codeforces Gym 100015B Ball Painting 找规律
- 素食启蒙一:纪录片
- nanomsg使用笔记-1
- bzoj2734 集合选数
- 三个小时还没有安装完成Citrix-DDC
- 226. Invert Binary Tree
- Android 四大组件之Activity
- 006 复杂的数据类型&函数(方法)
- 使用API在DigitalOcean上创建VPS
- Terminating app due to uncaught exception 'NSUnknownKeyException' reason: '[<ViewController 0x19862
- 适配器的用法
- BNUOJ29065鸣人的查克拉
- 关于容器为NavigationControlle时,view的起始位置的问题
- 编译内核步骤
- Codeforces Gym 100015A Another Rock-Paper-Scissors Problem 找规律
- 线程间互斥
- 蓝懿IOS/UINavigationController
- 手把手教你把Vim改装成一个IDE编程环境(图文)
- FPGA开发中的脚本语言
- C++编程中break语句和continue语句的学习教程