1.描述:
找到单链表倒数第n个节点,保证链表中节点的最少数量为n。
样例
给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1.
2.思路:
先写一个for循环来得到该链表的长度,然后再用一个for循环使迭代到要删除的节点位置,返回该节点即可。
3.代码:
ListNode *nthToLast(ListNode *head, int n) {
ListNode *p= new ListNode(0);
p=head;int i;
for(i=0;p!=NULL;i++)
{
p=p->next;
}
p=head;
for(int m=1;m!=i-n+1;m++)
{
p=p->next;
}
return p;
}
4.感想:此题我刚开始写的时候第一个for循环是用p->next来判断链表的尾节点,后来发现老是runtime error,后来才发现当p为空的时候,p->next会出现访问异常的问题。还有一个问题是原来我的返回结果用的是return p->val;后来才想起来函数的返回值类型必需和定义函数时的函数类型一样。
找到单链表倒数第n个节点,保证链表中节点的最少数量为n。
样例
给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1.
2.思路:
先写一个for循环来得到该链表的长度,然后再用一个for循环使迭代到要删除的节点位置,返回该节点即可。
3.代码:
ListNode *nthToLast(ListNode *head, int n) {
ListNode *p= new ListNode(0);
p=head;int i;
for(i=0;p!=NULL;i++)
{
p=p->next;
}
p=head;
for(int m=1;m!=i-n+1;m++)
{
p=p->next;
}
return p;
}
4.感想:此题我刚开始写的时候第一个for循环是用p->next来判断链表的尾节点,后来发现老是runtime error,后来才发现当p为空的时候,p->next会出现访问异常的问题。还有一个问题是原来我的返回结果用的是return p->val;后来才想起来函数的返回值类型必需和定义函数时的函数类型一样。