輸入: java
輸入可能包含多個測試樣例,輸入以EOF結束。
對於每一個測試案例,輸入的第一行爲兩個整數n和k(0<=n<=1000, 0<=k<=1000):n表明將要輸入的鏈表元素的個數,k表明要查詢倒數第幾個的元素。
輸入的第二行包括n個數t(1<=t<=1000000):表明鏈表中的元素。 node
對應每一個測試案例,
如有結果,輸出相應的查找結果。不然,輸出NULL。 ios
5 2 1 2 3 4 5 1 0 5樣例輸出:
4 NULL這題沒有什麼難度,須要主要的是,k>n的狀況。
#include <iostream> using namespace std; struct Node { int data; Node* next; Node(int data) { this->data = data; next = NULL; } Node() { this->data = 0; next = NULL; } }; int main() { int n, k; while (cin >> n >> k) { Node* head = new Node(); cin >> head->data; Node* p = head; Node* node = NULL; for (int i = 1; i < n; i++) { node = new Node; cin >> node->data; p->next = node; p = node; } if (k > n) { cout << "NULL" << endl; } else { p = head; Node* q = head; for (int i = 0; i < k; i++) { q = q->next; } while (q) { p = p->next; q = q->next; } if (p) { cout << p->data << endl; } else { cout << "NULL" << endl; } } } return 0; }
Java代碼: 測試
import java.util.Scanner; /** * * 項目名稱:jobdu * 類名稱:Main * 類描述: * 建立人: * 建立時間:2014-4-3 下午3:37:44 * 修改人: * 修改時間: * 修改備註: * @version */ public class Main { public static void main(String[] args) { // TODO Auto-generated method stub final class Node{ int data; Node next; public Node(int data) { this.data = data; this.next = null; } } Scanner scanner = new Scanner(System.in); while(scanner.hasNext()){ int n = scanner.nextInt(); int k = scanner.nextInt(); Node head = new Node(scanner.nextInt()); Node p = head; Node node = null; for(int i=1;i<n;i++){ node = new Node(scanner.nextInt()); p.next = node; p = node; } if(k > n){ System.out.println("NULL"); }else{ p = head; Node quick = head; for (int i = 0; i < k; i++) { quick = quick.next; } while (quick != null) { p = p.next; quick = quick.next; } if (p != null) { System.out.println(p.data); } else { System.out.println("NULL"); } } } } }