/* * a.cpp * * Created on: 2013-10-7 * Author: wangzhu */ #include<cstdio> #include<iostream> using namespace std; struct Node { int key; Node* next; }; void addToHead(Node* root, int val) { Node* tempNode = root->next; Node* node = new Node; node->key = val; node->next = tempNode; root->next = node; } void addToTail(Node* root, int val) { Node* node = new Node; node->key = val; node->next = NULL; if (root->next == NULL) { root->next = node; } else { Node* tempNode = root->next; while (tempNode->next != NULL) { tempNode = tempNode->next; } tempNode->next = node; } } void printHead(Node* node, int k) { for (int i = 1; i < k; i++) { node = node->next; } printf("%d ", node->key); } void printTail(Node* node, int k) { Node* firstNode = node; Node* secondNode = node; for (int i = 1; i < k; i++) { firstNode = firstNode->next; } while (firstNode->next != NULL) { firstNode = firstNode->next; secondNode = secondNode->next; } printf("%d ", secondNode->key); } int main() { freopen("data.in", "r", stdin); Node* root; int n, k, val; while (~scanf("%d%d", &n, &k)) { root = new Node; root->next = NULL; for (int i = 0; i < n; i++) { scanf("%d", &val); //addToHead(root, val); addToTail(root,val); } if (n == 0 || k == 0 || n < k) { printf("NULL "); } else { //printHead(root->next, k); printTail(root->next,k); } } return 0; }