タイトル1517:チェーンテーブルの最後からk番目のノード

2391 ワード

入力:
入力には複数のテストサンプルが含まれ、入力はEOFで終了します.各テストケースについて、入力される第1の動作の2つの整数nおよびk(0<=n<=1000、0<=k<=1000):nは、入力するチェーンテーブル要素の個数を表し、kは、クエリの最後から数番目の要素を表す.入力された2行目は、チェーンテーブルの要素を表すn個の数t(1<=t<=100000,000)を含む.
出力:
各テストケースに対応し、結果があれば、対応する検索結果を出力します.そうでなければNULLを出力します.
サンプル入力:
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");
				}
			}
			
		}
	}

}