강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

D.H Github님의 프로필 이미지
D.H Github

작성한 질문수

38군데 합격 비법, 2025 코딩테스트 필수 알고리즘

2-5. 링크드 리스트 구현 - 2

Linked List Element Delete Explanation Problem

작성

·

10

0

1. 현재 학습 진도

  • 몇 챕터/몇 강을 수강 중이신가요?

  • 어떤 알고리즘을 학습하고 계신가요?

  • 여기까지 이해하신 내용은 무엇인가요?

 

2. 어려움을 겪는 부분

  • 어느 부분에서 막히셨나요?

  • 코드의 어떤 로직이 이해가 안 되시나요?

  • 어떤 개념이 헷갈리시나요?

 

3. 시도해보신 내용

  • 문제 해결을 위해 어떤 시도를 해보셨나요?

  • 에러가 발생했다면 어떤 에러인가요?

  • 현재 작성하신 코드를 공유해주세요

 

이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊

 

 

아래 코드(TODO; 제가 만든 삭제코드, 정답지; 제공된 교재 답 풀이본) 에 대해 문의드립니다.

 

5,9,12,27 일때 정답지를 통해 결과를 뽑아보면 삭제가 안되는 현상이 일어납니다. 이와 관련해 어떻게 생각하실지 여쭙습니다!

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):
        node = self.head
        count = 0
        while count < index:
            node = node.next
            count += 1
        return node

    def add_node(self, index, value):
        new_node = Node(value)
        if index == 0:
            new_node.next = self.head
            self.head = new_node
            return

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

    # def delete_node(self, index): # TODO
    #     if index == 0: # 첫번째 노드를 불러와야 출력이 가능하므로 0번째 인덱스를 제거하려고하면 1번쨰 인덱스를 head로 지정 
    #         self.head = self.head.next
    #         return 
    #     before_node = self.get_node(index-1) # 1. 제거해야할 노드 이전 노드 찾기
        
    #     delete_node = self.get_node(index)
    #     before_node.next = delete_node.next  # 2. 이전 노드 next를 제거할 노드의 next로 
        
    #     delete_node.next = None # 3. 제거할 노드의 next 를 None 
        
    #     return "index 번째 Node를 제거해주세요!"

    def delete_node(self, index): # 정답지 
        if index == 0: # 첫번째 노드를 불러와야 출력이 가능하므로 0번째 인덱스를 제거하려고하면 1번쨰 인덱스를 head로 지정 
            self.head = self.head.next
            return 
        before_node = self.get_node(index-1) # 1. 제거해야할 노드 이전 노드 찾기
        before_node = before_node.next.next 
        
        return "index 번째 Node를 제거해주세요!"

linked_list = LinkedList(5)
linked_list.append(9)
linked_list.append(12)
linked_list.append(27)
print("제거 전")
linked_list.print_all()
print("제거 후")
linked_list.delete_node(3)
linked_list.print_all()

 

 

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
D.H Github님의 프로필 이미지
D.H Github

작성한 질문수

질문하기