データ構造 〜 第2章 連結リスト 「ランナー」テクニック

ランナーテクニックとは、連結リストの最初から順に巡回するポインタと、そのポインタより先を巡回するポインタの2種類を同時に使用する方法。

データ構造 〜 第2章 連結リスト 問題2-1」で扱った連結リストから重複する要素を削除する問題を、ランナーテクニックを使用して解く。

//ソートされていない連結リストから重複する要素を削除するメソッド
	public Node deleteDuplicatedNodeByRunner(Node head){
		if(head == null){
			return head;
		}
		
		Node node = head;
		while(node != null){
			Node runner = node;
			while(runner.next != null){
				if(runner.next.data == node.data){
					runner.next = runner.next.next;
				}else{
					runner = runner.next;
				}
			}
			node = node.next;
		}
		//headは、nodeの最初の要素を指したままで変わらない。
		return head;
	}