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

来源:互联网 发布:如何自学seo 编辑:程序博客网 时间:2024/05/17 20:28

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; }


0 0