データ構造接続リスト
12909 ワード
接続リスト
順次接続されたノードを表すデータ構造.
画像ソース:https://freestrokes.tistory.com/84
ノード:値と次のノードアドレスを指すポインタで構成されます.
Headノードが指すノードは最初のノードです
ノードのポインタがnullの場合、ノードは最後のノードです.
コンテキストの使用
大量のデータの挿入と削除が必要
大量のデータ・クエリーが必要
単一接続リストの実装
Java
public class SingleLinkedList {
private Node head;
private int size;
SingleLinkedList() {
head = new Node();
size = 0;
}
private class Node {
public Node next;
private Object data;
public Node(Object data) {
this.data = data;
this.next = null;
}
public Node() {}
}
// 첫번째 노드에 새 노드 연결
public void add2Head(Object data) {
Node newNode = new Node(data);
newNode.next = head.next;
head.next = newNode;
size++;
}
// 마지막 노드에 새 노드 연결
public void add2Tail(Object data) {
Node newNode = new Node(data);
Node now = head;
// 데이터 순회
while (now.next != null) {
now = now.next;
}
now.next = newNode;
size++;
}
// 특정 위치에 새 노드 삽입
public void insert(int idx, Object data) {
int i = 1;
Node newNode = new Node(data);
Node now = head;
while (i < idx) {
now = now.next;
i++;
}
newNode.next = now.next;
now.next = newNode;
}
// 특정 위치 노드 삭제
public Object delete(int idx) {
int i = 1;
Object data;
Node now = head;
Node removedNode;
while (i < idx) {
now = now.next;
i++;
}
removedNode = now.next;
now.next = removedNode.next;
data = removedNode.data;
removedNode = null;
System.out.println(idx + "번째 데이터, "+ data + " 삭제됐습니당 ");
return data;
}
// 연결리스트 전체 출력
public void printNodes() {
Node now = head;
if (head.next == null) {
System.out.println("저장된 데이터가 없습니다.");
}
while (now.next != null) {
System.out.println(now.next.data);
now = now.next;
}
}
}
接続リストのタイプ
H(句読点)→[]→[]→[]→[]
欠点:なくすかもしれなくて、私の前が谁なことを知りません
H(ヘッダ点)→[]→[]→[]→H(最後にヘッダ点を指す)
欠点:接続が切断された場合、フロントエンドが見つからない可能性があります.
円形、二層リストは簡単にナビゲートできますが、なかなか実現できません.だから簡単にリストに接続したほうがいいです.
Reference
この問題について(データ構造接続リスト), 我々は、より多くの情報をここで見つけました https://velog.io/@superyodi/자료구조-연결리스트テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol