作业6.174:删除链表中倒数第n个节点
2017-03-28 18:00
246 查看
题目:删除链表中倒数第n个节点
样例:给出链表1->2->3->4->5->null和n=2。
删除倒数第二个节点之后,这个链表将变成1->2->3->5->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) {
// write your code here
ListNode *p=new ListNode(0), *r;
p->next=head;
r=p;
head=p;
int count=-1,i;
while(head!=NULL)
{
count++;
head=head->next;
}
for(i=-1;i<count-n-1;i++)
{
r=r->next;
}
r->next=r->next->next;
return p->next;
}
};
感想:这个问题是上一个的进化版,上一个题需要找出倒数第几个节点,这一个题就是接着上一个把找到的那个节点删掉就可以了。想是挺好想的,但是调试程序的过程中,除了不少错误,在找节点的时候总是找的不对,改了很多回才把程序改好。
样例:给出链表1->2->3->4->5->null和n=2。
删除倒数第二个节点之后,这个链表将变成1->2->3->5->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) {
// write your code here
ListNode *p=new ListNode(0), *r;
p->next=head;
r=p;
head=p;
int count=-1,i;
while(head!=NULL)
{
count++;
head=head->next;
}
for(i=-1;i<count-n-1;i++)
{
r=r->next;
}
r->next=r->next->next;
return p->next;
}
};
感想:这个问题是上一个的进化版,上一个题需要找出倒数第几个节点,这一个题就是接着上一个把找到的那个节点删掉就可以了。想是挺好想的,但是调试程序的过程中,除了不少错误,在找节点的时候总是找的不对,改了很多回才把程序改好。
相关文章推荐
- 删除链表中倒数第n个节点
- 删除链表中倒数第n个节点
- #19 Remove Nth Node From End of List(删除链表倒数第N个节点)
- 删除链表中倒数第n个节点(LintCode)
- 【LeetCode题解】19_删除链表的倒数第N个节点(Remove-Nth-Node-From-End-of-List)
- LintCode 删除链表中倒数第n个节点
- 删除链表中倒数第n个节点
- 删除链表中倒数第n个节点
- leetcode-19. Remove Nth Node From End of List(删除链表倒数第N个节点)
- [LeetCode-19] Remove Nth Node From End of List(删除链表中倒数第N个节点)
- 删除链表中倒数第n个节点
- 删除链表中倒数第n个节点
- 作业5.174:链表中倒数第n个节点
- 删除链表中倒数第n个节点
- LeetCode算法练习(删除链表的倒数第N个节点)
- 删除链表中倒数第n个节点
- lintcode——删除链表中倒数第n个节点(链表)
- python_lintcode_372在O(1)时间复杂度删除链表节点_174删除链表中倒数第n个节点
- 删除链表中倒数第n个节点
- 删除链表中倒数第n个节点