자료구조 & 알고리즘

[자료구조] 선형자료구조 연결리스트(Linked List) 노드(Node) 위치값 찾기

진기명기 2023. 3. 9. 02:38
🫠 선형자료구조 - 연결리스트(Linked List) 내에 있는 노드(node)의 위치값 찾기

 

❗️ link3 연결리스트를 이어서 작성(링크 참고)

https://cyjcyj.tistory.com/98

 

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

🫠 선형자료구조 - 연결리스트(Linked List) 원하는 위치에 노드(Node) 추가하기 ❗️ 연결리스트에 노드 추가하는 또 다른 방법 확인 ⬇️⬇️⬇️ https://cyjcyj.tistory.com/97 [자료구조] 선형자료구조

cyjcyj.tistory.com

 

 

 


🫠 연결리스트(Linked List) 내에 존재하는 노드(node)의 위치값을 찾아보자

> indexOf 메서드

/* 노드의 위치값 찾기 */

LinkedList.prototype.indexOf = function(value) {

  let current = this.head,index = 0

  // 현재 node가 null이 아닐 때까지
  while(current != null){
    if(current.data === value){ // 연결리스트 내 노드의 data가 찾고자하는 노드의 data와 같다면
      return index 
    }

    // 찾고자 하는 node의 data가 아니라면
    index++ 
    current = current.next
  }

  // 연결리스트 내에 찾고자 하는 node가 없다면
  return -1 
  
}
👉🏻 output : 설명 주석 처리 확인
✅ node의 위치값을 찾는 코드는 단순하다. 해당 node의 data값을 현재 연결리스트에 존재하는 node의 data값과 비교하면 된다.

 

 

 

❗️ indexOf를 통해 원하는 노드의 위치값을 찾아보자

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

console.log(link3.indexOf(1000)) // -1
console.log(link3.indexOf(100)) // 0
console.log(link3.indexOf(50)) // 2
console.log(link3.indexOf(10)) // 4
👉🏻 output : 주석 처리 확인
✅ indexof(1000)의 경우, 연결리스트에 해당하는 노드가 없기 때문에 -1을 반환하였다.
✅ 각각 해당하는 노드의 data에 맞는 위치값을 반환한 것을 확인할 수 있다.

 

 


🫠  removeAt + indexOf를 한 번에 사용하는 메서드를 작성해 보자

/* removeMix = removeAt + indexOf */

LinkedList.prototype.removeMix = function(value){

  let index = this.indexOf(value) // indexOf의 반환값 담김
  return this.removeAt(index)

}
link3.printNode() // 100 -> 70 -> 50 -> 30 -> 10 -> null
console.log(link3.removeMix(1000)) // null

link3.removeMix(10)
link3.printNode() // 100 -> 70 -> 50 -> 30 -> null

link3.removeMix(50)
link3.printNode() // 100 -> 70 -> 30 -> null

link3.removeMix(100)
link3.printNode() // 70 -> 30 -> null

console.log(link3.size()) // 2
👉🏻 output : 주석 처리 확인
✅ node의 data 값을 받는 removeMix 메서드가 indexOf 메서드를 통해 해당 node의 index 값을 반환받고, removeAt의 인자값으로 넘겨주어 해당 index에 맞는 node를 삭제해 주었다.

 

 

 

❗️removeAt 메서드는 아래 링크에서 확인 ⬇️⬇️⬇️

https://cyjcyj.tistory.com/100

 

[자료구조] 선형자료구조 연결리스트(Linked List) 노드(Node) 위치값으로 삭제하기

🫠 선형자료구조 - 연결리스트(Linked List) 내에 있는 노드(node) 위치값으로 삭제하기 ❗️ 노드 value값으로 삭제하는 방법도 확인! ❗️ link3 연결리스트를 이어서 작성(두 번째 링크 확인하기) http

cyjcyj.tistory.com