Linked list
2081 ワード
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
Reference
この問題について(Linked list), 我々は、より多くの情報をここで見つけました
https://velog.io/@hari6180/Linked-list
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
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
Reference
この問題について(Linked list), 我々は、より多くの情報をここで見つけました https://velog.io/@hari6180/Linked-listテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol