题目:链表倒数第n个节点
问题描述:找到单链表倒数第n个节点,保证链表中节点的最少数量为n。如:给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1.
思路:遍历整个链表,计数链表元素的个数。第二遍遍历链表,到倒数第n个节点处停止,输出第n个节点。
代码:
class Solution {
public:
/**
* @param head: The first node of linked list.
* @param n: An integer.
* @return: Nth to last node of a singly linked list.
*/
ListNode *nthToLast(ListNode *head, int n) {
// write your code here
int count=0;
ListNode *temp=head;
while(head!=NULL){
head=head->next;
count++;
}
int k=count-n;
count=0;
while(temp!=NULL&&count<k){
temp=temp->next;
count++;
}
return temp;
}
};
感想:这是我第一道自己着笔的代码,没有思路真的是什么都写不出来,所以说写代码之前一定要想好思路。