본문 바로가기
✍ 따뜻한 개발 공부

[알고리즘] 링크드 리스트 원소 찾기 (주말공부)

by 따따시 2022. 11. 12.

링크드 리스트 원소 찾기

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None


class LinkedList:
    def __init__(self, value):
        self.head = Node(value)

    def append(self, value):
        cur = self.head
        while cur.next is not None:
            cur = cur.next
        cur.next = Node(value)

    def print_all(self):
        cur = self.head
        while cur is not None:
            print(cur.data)
            cur = cur.next

    def get_node(self, index):
        return "index 번째 노드를 반환해보세요!"

linked_list = LinkedList(5)
linked_list.append(12)
linked_list.get_node(0) # -> 5를 들고 있는 노드를 반환해야 합니다!

 

코드 분석 

 

def get_node(self, index):

                return "index 번째 노드 반환"

 

next.node로 가는걸 index번 해야한다는 의미

 

 

                 # index만큼 next 이동을 해야하는데, node에는 node.next를 담을거니

                    원하는 인덱스 위치의 값을 얻으려면 index-1 이라고 생각을 하고 있는 상태로

                    count 라는 인스턴스를 만들고 count를 1씩 증가시키면서, 

                    index보다 count가 작아질 때 node를 반환하도록 식을 세우기

 

def get_node(self, index):

                 node = self.head
                 count = 0
                 while count < index:
                                 node=node.next
                                 count += 1
                 return node

 

직접 예시 세워보며 코드 분석하기 

 

 

 

특정 index 삭제하기

    def delete_node(self, index):
        if index ==0:
            self.head = self.head.next
            return

        node = self.get_node(index-1)
        node.next = node.next.next

 

 

 

 

 

 

댓글