반응형

2022.06.08 - [자료구조] - [자료구조] Linked List - (4) 노드 삽입 (at the front)

 

[자료구조] Linked List - (4) 노드 삽입 (at the front)

2022.06.07 - [자료구조] - [자료구조] Linked List - (3) 노드 삽입 (at the end) 본 글에서는 위의 글에 이어서 새로운 노드를 Linked List 맨 앞에 추가하는 방법을 다룸. (1) 새로운 노드를 Linked List 맨 앞..

wschoi.tistory.com

본 글에서는 Linked List에 삽입된 노드들의 데이터를 조회하는 메소드를 다룸.

Linked list에 연결된 노드들의 data를 조회 

1) head가 가리키는 노드부터 순차적으로 출력하기 위해 cur 변수를 사용해 head가 참조하는 노드를 같이 참조

cur = self.head

2) cur 변수가 가리키는 노드의 data 출력

print(cur.data, end=" ") # 3

3) cur이 가리키는 노드를 연결된 노드로 이동

cur = cur->next

4) cur이 가리키는 노드의 data 출력 

print(cur.data, end=" ") # 2

위 과정을 print 메소드로 묶어서 표현하면 아래와 같음

def print(self):
        cur = self.head

        while cur:
            print(cur.data, end=" ")
            cur = cur.next
        print()

최종 코드

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

class LinkedList:
    def __init__(self):
        self.head = None
        self.tail = None

	# linked list 끝에 노드 추가
    def append(self, new_data):
        new_node = Node(new_data)

        if self.head is None:
            self.head = new_node
        else:
            self.tail.next = new_node
            
        self.tail = new_node

	# linked list 처음에 노드 추가
    def push(self, new_data):
        new_node = Node(new_data)

        if self.head is None:
            self.tail = new_node
        else:
            new_node.next = self.head
        
        self.head = new_node

    def print(self):
        cur = self.head

        while cur:
            print(cur.data, end=" ")
            cur = cur.next
        print()

if __name__ == "__main__":
    linked_list = LinkedList()
    linked_list.print() # 출력 없음
    linked_list.push(1)
    linked_list.print() # 1
    linked_list.push(2)
    linked_list.print() # 2 1
    linked_list.push(3)
    linked_list.print() # 3 2 1
반응형

+ Recent posts