找到单链表倒数第n个节点,保证链表中节点的最少数量为n。
样例
给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1.
#ifndef C166_H
#define C166_H
#include<iostream>
using namespace std;
class ListNode{
public:
int val;
ListNode *next;
ListNode(int val)
{
this->val = val;
this->next = next;
}
};
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
if (n <= 0)
return NULL;
int num = 0;
ListNode *p = head;
while (p != NULL)
{
num++;
p = p->next;
}
if (num < n)
return NULL;
int k = num - n;
ListNode *q = head;
while (k != 0)
{
q = q->next;
--k;
}
return q;
}
};
#endif