노드 클래스

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

 

Single Linked List 클래스

class SLL:
    def __init__(self, data): #생성자
        self.head = Node(data)

    def append(self, data): #노드 추가
        current_node = self.head
        while current_node.next is not None:
            current_node = current_node.next
        current_node.next = Node(data)

    def print(self): #노드 출력
        current_node = self.head
        while current_node is not None:
            print(current_node.data)
            current_node = current_node.next

    def get_index(self, index): #노드 인덱스 알아내기
        conut = 0
        node = self.head
        while conut < index:
            conut += 1
            node = node.next
        return node

    def insert_node(self, index, value): #노드 삽입
        new_node = Node(value)
        if index == 0:
            new_node.next = self.head
            self.head = new_node
            return
        previous_node = self.get_index(index-1)
        next_node = previous_node.next
        previous_node.next = new_node
        new_node.next = next_node

    def delete_node(self, index): #노드 삭제
        if index == 0:
            self.head = self.head.next
            return
        node = self.get_index(index-1)
        node.next = node.next.next

 

테스트 결과

노드 추가

 

노드 삭제

 

노드 삽입