Remove Nth Node From End of List
2016-03-20 21:52
447 查看
删除链表的倒数第n个元素
算法:
用三个指针p,q,r,p指针作为前移指针,q指针指向倒数第n个元素的指针,r为q指针的前面一个元素的指针。起始时刻p指向head,让p和q之间的距离为n,这样当p指向链表末尾的时候,q自然指向的是倒数第n个元素。
代码:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { int len = 0; ListNode* p = head; ListNode* q = p; ListNode* r = q; while(p!=nullptr) { if(n>0) { p = p->next; --n; } else { r = q; q=q->next; p=p->next; } } //此时删除的元素为第一个元素 if(r==q) { r = head->next; delete head; head =nullptr; return r; } r->next = q->next; delete q; q=nullptr; return head; } };
相关文章推荐
- nodejs
- MEAN Stack入门-1: Node.js-to-AngularJS组件介绍
- Node对象的几个属性
- nodejs 使用socket.io与网页实时数据交互
- Node.js数据流Stream之Readable流和Writable流
- hadoop:data node 距离远近的计算
- nodejs-基础大杂烩(待整理)
- nodejs-路由(待补充)
- nodejs-循环
- nodejs-函数
- nodejs-安装及卸载
- nodejs-express
- nodejs-Module
- nodejs-Sream
- nodejs-Buffer
- nodejs-EventEmitter
- nodejs-fs模块
- nodejs-基本语法
- nodejs-NPM基本使用
- Node.js-入门