자료구조 & 알고리즘

[자료구조] 선형자료구조 연결리스트(Linked List) 원하는 위치에 노드(Node) 추가하기

진기명기 2023. 3. 8. 18:12
🫠 선형자료구조 - 연결리스트(Linked List) 원하는 위치에 노드(Node) 추가하기

❗️ 연결리스트에 노드 추가하는 또 다른 방법 확인 ⬇️⬇️⬇️

https://cyjcyj.tistory.com/97

 

[자료구조] 선형자료구조 연결리스트(Linked List)에 노드(Node) 추가하기

🫠 선형자료구조 - 연결리스트(Linked List)에 노드 추가하기 ❗️prototype을 이용한 노드와 연결리스트 생성 방법 먼저 확인하고 오자! https://cyjcyj.tistory.com/95 [자료구조] 선형자료구조 프로토타입

cyjcyj.tistory.com

 

 


🫠 연결리스트 원하는 위치에 노드 추가하기

> insert 메서드

/* 노드 중간에 삽입하기 */

LinkedList.prototype.insert = function(value, position = 0){

  // position이 음수거나 해당 연결리스트보다 길이가 클 경우는 아래 코드를 작동하지 말고, false 리턴
  if(position < 0 || position > this.length){
    return false
  }

  // 새로운 노드 생성, 현재 노드 위치는 this.head가 가리키는 노드(초기화), prev(이전 노드값을 저장할 변수)
  let node = new Node(value), current = this.head, index = 0, prev

  if(position === 0){ // 만약 위치 0에 node를 새로 추가할 경우
    node.next = current // 새로 추가하는 node의 next에 현재 current(node)를 넣어줘라 (즉, 위치 1에)
    this.head = node 
  } else {
    while(index++ < position){ // position보다 index++의 결과가 더 작을때까지
      prev = current // current에 prev를 추가해줘라
      current = current.next // current는 current.next로 옮겨줘라
    }

    // 새로운 노드를 넣을 위치를 만나면 while문을 빠져나와 아래 실행
    node.next = current // current와 prev 사이에 새로운 node가 들어옴(기준 : node)
    prev.next = node
  }

  this.length++
  return true
}
👉🏻 output : 설명 주석 처리 확인
✅ insert 메서드의 매개변수 중 position에 기본값 0을 주었다. (만약 position을 따로 지정하지 않았을 경우 대비)
✅ 이전 노드를 저장하는 prev 변수와 현재 어느 위치에 있는지 확인해 주는 Index를 추가하였다. 

 

 

 

❗️ 새로운 연결리스트를 생성하여 insert 메서드를 사용해 보자

let link3 = new LinkedList()

link3.insert(10)
link3.insert(50)
link3.insert(100)
link3.printNode() // 100 -> 50 -> 10 -> null

link3.insert(70,1)
link3.printNode() // 100 -> 70 -> 50 -> 10 -> null

link3.insert(30,3)
link3.printNode() // 100 -> 70 -> 50 -> 30 -> 10 -> null

console.log(link3.size()) // 5
👉🏻 output : 주석 처리 확인
✅ 노드 10, 50, 100은 따로 position을 주지 않았기 때문에 순서대로 위치 0에 들어간 것을 확인할 수 있다. 
✅ insert(70,1) : data 70을 가진 노드를 위치 1에 추가한 것 (원래 [0] = 100, [1] = 50, [2] = 10) 
✅ insert(30, 3)도 마찬가지로 추가