[データ構造アルゴリズム]リンクリスト??
1592 ワード
リンクリストとは?
コンピュータ資料構造の一種で、1列のデータを格納するために使用される.
データを格納するスペースがあれば、データに次のデータアドレスがあります.
Array
アレイは物理的にアレイの部屋の大きさを持つため、部屋の大きさを増やしたり減らしたりすることはできません.
したがって、配列を追加するたびに、配列を再宣言、コピー、追加する必要があります.
長さが不確定なデータを処理する場合は、リンクリストを使用します.
リンクリストの追加と削除
const LinkedList = (() => {
function LinkedList() {
this.length = 0;
this.head = null;
}
function Node(data) {
this.data = data;
this.next = null;
}
LinkedList.prototype.add = function (value) {
let node = new Node(value);
let current = this.head;
if(!current) { // 노드가 없을때
this.head = node; // 노드 추가
this.length ++;
return node;
}
while(current.next) { // 노드가 있을때 마지막 노드 찾기
current = current.next
}
current.next = node // 마지막에 노드 추가
this.length++;
return node
}
LinkedList.prototype.remove = function (position) { // 첫번째 노드를 삭제하는건 다음 기회에
let current = this.head;
while (current.next !== null) { // 노드를 돌면서 마지막노드가 아닐때 까지
if (current.next.data === position) { // 다음 데이터가 내가 삭제해야 할 노드면
current.next = current.next.next; // 내 다음노드를 바라보던 값을 다음다음값으로 변경
} else {
current = current.next;
}
}
this.length--;
return this.head;
}
return LinkedList;
})()
const list = new LinkedList();
list.add(1);
list.add(2);
list.add(3); // length 3
list.remove(2); // length 2
Reference
この問題について([データ構造アルゴリズム]リンクリスト??), 我々は、より多くの情報をここで見つけました https://velog.io/@hhxdragon/자료구조-알고리즘-Linked-Listテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol