データ構造 〜 第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; }