您的位置:首页 > 其它

Q2.2 Find the kth to last element of a singly linked list

2015-01-17 14:57 411 查看
Q: Find the kth to last element of a singly linked list

A:两个指针,第一个指针从头开始,遍历k-1步,第二个指针开始从头遍历,当第一个指针到最后时,第二个指针的元素就是想要的结果。

#include <iostream>
using namespace std;

struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode *init(int a[], int n) {
ListNode *head = NULL;
ListNode *p = NULL;
for (int i = 0; i < n; i++) {
ListNode *cur = new ListNode(a[i]);
if (i == 0) {
head = cur;
p = cur;
}
p->next = cur;
p = cur;
}
return head;
}
int kthToLast(ListNode *head, int k) {
ListNode *first = head;
ListNode *second = head;
for (int i = 0; i < k; i++) {
first = first->next;
}
while (first) {
first = first->next;
second = second->next;
}
return second->val;
}
int main() {
int a[10] = {1,5,2,6,7,4,6,2,8,9};
ListNode *head = init(a, 10);
cout<<kthToLast(head, 2)<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐