Javascript 연결 목록 데이터 구조
연결된 목록은 배열과 유사한 선형 데이터 구조입니다. 그러나 배열과 달리 요소는 특정 메모리 위치나 인덱스에 저장되지 않습니다. 오히려 각 요소는 해당 목록의 다음 개체에 대한 포인터 또는 링크를 포함하는 별도의 개체입니다.
이점:
단점:
연결 리스트 내부 설계
function LinkedList() {
let length = 0;
let head = null;
const Node = function(element) {
this.element = element;
this.next = null;
}
this.size = function() {
return length;
}
this.head = function() {
return head;
}
this.add = function(element) {
let node = new Node(element);
if (head == null) {
head = node;
} else {
let currentNode = head;
while (currentNode.next) {
currentNode = currentNode.next;
}
currentNode.next = node;
}
length++
}
this.remove = function(element) {
let currentNode = head;
let previousNode;
if (currentNode.element == element) {
head = currentNode.next;
} else {
while (currentNode.element !== element) {
previousNode = currentNode;
currentNode = currentNode.next;
}
previousNode.next = currentNode.next;
}
length--;
}
this.isEmpty = function() {
return length == 0;
}
this.indexOf = function(element) {
let currentNode = head;
let index = -1;
while (currentNode) {
index++;
if (currentNode.element == element) {
return index;
}
currentNode = currentNode.next;
}
return -1;
}
this.elementAt = function(index) {
let currentNode = head;
let count = 0;
while (count < index) {
count++
currentNode = currentNode.next;
}
return currentNode.element;
}
}
var link = new LinkedList();
link.add("hello");
link.add("hello")
console.log(link)
console.log("elementAt", link.elementAt(0))
console.log("indexOf", link.indexOf("bye"))
link.remove("hello")
link.remove("hello")
console.log("isEmpty", link.isEmpty())
console.log("length", link.size())
Any comments or suggestions are welcome.
Reference
이 문제에 관하여(Javascript 연결 목록 데이터 구조), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bvnkumar/javascript-linked-list-data-structure-9k9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)