본문 바로가기

JAVASCRIPT

JAVASCRIPT ) singly Linked List

배열의 길이가 5만개라고 가정해보자

만약 맨 첫번째 배열값을 삭제하면 나머지 4만9천9백9십9개가 앞으로 한칸씩 자리를 이동하게될것이고

그러면 엄청난 부하가 생길것이다.

따라서 우리가 알고있는 shift()같은 것은 실제로 대규모 데이터를 다루기엔 문제가 있다.

 

이를 해결하기위해 singly Linked List 자료구조형을 이용한다.

데이터에 다음 데이터를 연결시켜주면 중간에 데이터가 삭제되더라도 데이터의 이동이 일어나지않는다.

 

이 구조는 단방향 탐색만 가능하다.

A 다음이 B라는건 알 수 있지만 B 이전이 A라는건 알 수 없다.

 

 

class singleLikedList{
    constructor(id){
        this.id = id;
        this._value = null;
        this._link = null;
    }
    set value(itemValue){
        this._value = itemValue;
    }
    get value(){
        return this._value;
    }
    set link(nextNode){
        this._link = nextNode;
    }
    get link(){
        return this._link;
    }
}

const link1 = new singleLikedList('link1');
const link2 = new singleLikedList('link2');
const link3 = new singleLikedList('link3');
link1.value = "Zard";
link2.value = "CDR";
link3.value = "Love";
link1.link = link2;
link2.link = link3;
document.write((link1.link.link).value + "<br>");   //love

 

 

 

예제)

class singleLinkedList{
    constructor(id){
        this._id = id;
        this._link = null;
    }
    get id(){
        return this._id;
    }
    set id(newName){
        this._id = newName;
    }
    get link(){
        return this._link;
    }
    set link(linkObject){
        this._link = linkObject;
    }
}
const choji = new singleLinkedList('choji');
const gojan = new singleLinkedList('gojan');
const joongang = new singleLinkedList('joongang');
const handea = new singleLinkedList('handea');
const sangloksu = new singleLinkedList('sangloksu');
const banwol = new singleLinkedList('banwol');
choji.link = gojan;
gojan.link = joongang;
joongang.link = handea;
handea.link = sangloksu;
sangloksu.link = banwol;
document.write(choji.link.link.link.id);

 

반응형

'JAVASCRIPT' 카테고리의 다른 글

JAVASCRIPT ) canvas로 데이터 시각화  (0) 2024.08.02
JAVASCRIPT ) Double Linked List  (0) 2024.07.31
JAVASCRIPT ) map()  (0) 2024.07.30
JAVASCRIPT ) sort()  (0) 2024.07.30
JAVASCRIPT ) 배열 고차 함수  (0) 2024.07.30