題目1517:鏈表中倒數第k個結點


輸入: 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");
				}
			}
			
		}
	}

}
相關文章
相關標籤/搜索