Linked list


why?



よく配列と比較するリンクリスト
配列はサイズを変更できないため、データ削除を追加するには新しい配列を作成する必要がありますが、Linked listのサイズ変更は自由なので、データの追加と削除が容易です.
しかし、クエリーの欠点は、リスト構造が遅いことです.

Linked list?


接続リスト.各ノードには、データとポインタがあり、データのデータ構造を1行接続で格納します.
上の図の構造を見てください.
新しいデータを追加すると、既存の接続が切断され、新しい追加データのアドレス値にポインタが接続されます.
削除すると、削除するノードのアドレス値が消去され、データを削除するノードアドレスにポインタが接続されます.

種類は、一方向接続リスト、双方向接続リストがあります.
末尾からデータのクエリーを開始すると、双方向のリストが速くなります.

code


LinkedList

package study.java.util;
public class LinkedList {
	Node header;
	
	static class Node {
		int data;
		Node next = null;
	}
	
	public LinkedList() {
		header = new Node();
	}
	
	public void append(int d) {
		Node end = new Node();
		end.data = d;
		Node n = header;
		while (n.next != null) {
			n = n.next;
		}
		n.next = end;
	}
	
	public void delete(int d) {
		Node n = header;
		while (n.next != null) {
			if (n.next.data == d) {
				n.next = n.next.next;
			} else {
				n = n.next;
			}
		}
	}
	
	public void retrieve() {
		Node n = header.next;
		while (n.next != null) {
			System.out.print(n.data + " -> ");
			n = n.next;
		}
		System.out.println(n.data);
	}
	
	public void removeDups() {
		Node n = header;
		while (n != null && n.next != null) {
			Node r = n;
			while (r.next != null) {
				if (n.data == r.next.data) {
					r.next = r.next.next;
				} else {
					r = r.next;
				}
			}
			n = n.next;
		}
	}
}

タイトルを使用する理由



ベースポイントとして使用するノードを削除すると、他のオブジェクトからアクセスしたときにデータが見つからない場合があります.したがって、データではなく、管理ヘッダと呼ばれるノードを作成して、アクセスして質問することができます.
リファレンス
https://www.youtube.com/channel/UCWMAh9cSkEn8v42YRO90BHA/videos?view=0&sort=da