基本问题描述:
找到并返回链表中倒数第N个节点,保证链表中节点的最少数量为N。
实现思路:
首先利用FOR函数得到链表的总节点数M个;链表中的倒数第N个节点就是该链表的第M-N+1个节点;找到该连表中的第M-N+1个节点,并返回该节点。
实现代码:
ListNode *nthToLast(ListNode* head, int n) {
// write your code here
if(head==NULL){
return NULL;
}
int count = 0;
ListNode* p;
for (p= head; p->next!= NULL; count++)
{ p= p->next;
}
int i = 0;
for (p= head; i< count-n+1; i++)
{p = p->next;
}
return p;
}
感想:
首先要考虑到特殊情况,当链表为空时(head==NULL),返回NULL;其次利用FOR循环得到链表的总节点数,利用FOR循环得到倒数第N个节点;最后,题目要求返回的是节点而不是该节点的数据元素。