Javascript LinkedList 만들기

2024. 2. 12. 14:07·자료구조
class LinkedList {
  head = null;
  length = 0;

  add(value){
    if(this.head){  
      //head가 있을때
      let current = this.head;
      while(current.next){
        //while문으로 next가 있을 때까지 head를 이동
        current = current.next;
      }
      current.next = new Node(value);
    }else{
      //head가 없을때
      this.head = new Node(value);
    }

    this.length ++;
    return this.length;
  }

    #search(index){
    let cnt = 0;
    let prev; 
    let current = this.head;
    while(cnt < index){
      prev = current;
      current = current.next;
      cnt++;
    }
    //prev는 index에 해당하는 값 바로 전의 노드 current는 찾고자하는 인덱스의 노드
    return [prev, current];
  }
  
  remove(index){
    if(!this.head){
      //head가 있을때
      return null;
    }
    const [prev, current] = this.#search(index);
    if(prev){
      prev.next = current.next;
    }else{
      this.head = current.next;
    }

    this.length --;
    return this.length;
  }

  search(index){
    const current = this.#search(index)[1];
    return current.value;
  }

  get length(){
    return this.length;
  }
}

class Node{
  next = null;
  constructor(value){
    this.value = value;
  }
}

const li = new LinkedList();
li.add(1);
li.add(2);
li.add(3);
li.remove(0);
li.remove(1);
console.log('search', li.search(0));
저작자표시 비영리 (새창열림)

'자료구조' 카테고리의 다른 글

연결 리스트(Linked List)  (0) 2024.04.23
BFS, DFS, Tree traversal - Javascript 구현  (1) 2024.02.20
Javascript로 이진탐색트리 구현하기  (1) 2024.02.12
Javascript로 Stack 구현하기  (1) 2024.02.12
Javascript로 Queue 구현하기  (0) 2024.02.12
'자료구조' 카테고리의 다른 글
  • BFS, DFS, Tree traversal - Javascript 구현
  • Javascript로 이진탐색트리 구현하기
  • Javascript로 Stack 구현하기
  • Javascript로 Queue 구현하기
king_hd
king_hd
웹 개발 공부를 위한 블로그입니다.
king_hd
웹 개발 기록
king_hd
전체
오늘
어제
  • 분류 전체보기
    • HTML
    • CSS
    • JS
    • Typescript
    • React
    • nodejs
    • Redux
    • Git
    • 오류모음
    • Webpack
    • 자료구조
    • 네트워크
    • Electron
    • 배포
    • Docker
    • 프로그래머스

블로그 메뉴

  • 홈

링크

공지사항

인기 글

태그

TAVE
let
docker
리덕스
https 인증서 발급
const
docker mysql workbench 연동하는 법
Hook
Redux
propertykey
웹퍼블리셔
Redux-saga
TypeScript
웹개발
JavaScript
코딩테스트
자바스크립트
env파일 환경변수 인식
next.js
타입스크립트
4차산업혁명동아리
백엔드
mysqld: can't open file: 'mysql.ibd' (errno: 0 - )
react
프론트엔드
인증서 자동갱신
프로그래머스
리덕스사가
webpack
ec2에 docker 설치

최근 댓글

최근 글

hELLO· Designed By정상우.v4.6.0
king_hd
Javascript LinkedList 만들기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.