2020-03-21
1.题目描述
链表中倒数第k个节点
2.题解
倒数第k个,相当于正数第l-k+1个,其中l为链表的长度
3.代码
#include <iostream>
using namespace std;
// Definition for singly-linked list.
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
ListNode* getKthFromEnd(ListNode* head, int k) {
int cnt=0;
ListNode* p=head;
while (p){
p=p->next;
cnt++;
}
if (k>cnt) return NULL;
int i=1;
p=head;
while (p){
if (i==cnt-k+1) break;
i++;
p=p->next;
}
return p;
}
};
int main(){
Solution s;
ListNode* head=NULL, *p,*q;
int i;
p=(ListNode*)malloc(sizeof(ListNode));
p->val=1;
p->next=NULL;
head=p;
q=p;
p=(ListNode*)malloc(sizeof(ListNode));
p->val=0;
q->next=p;
p->next=NULL;
q=p;
p=(ListNode*)malloc(sizeof(ListNode));
p->val=1;
q->next=p;
p->next=NULL;
s.getKthFromEnd(head,1);
return 0;
}