프로그래밍

[자료구조] Python 파이썬으로 단일연결 정렬 리스트 구현하기 코드 설명

판다의 삶 2020. 6. 2. 13:19
728x90
class Node:
    def __init__(self, data):
        self.data = data
        self.next = None


class SinglySortedLinkedList:
    def __init__(self):
        self.head = None
        self.count = 0

    def append(self, node):
        if self.count == 0:
            self.head = node
            self.count = 1

        else:
            cur_node = self.head
            prev_node = None
            
		# cur_node의 data와 node의 data를 비교하며 삽입 위치 파악
            while cur_node != None and cur_node.data <= node.data:
                prev_node = cur_node
                cur_node = cur_node.next
                
		# node의 next를 cur_node로 설정
            node.next = cur_node
            
            # node의 data가 가장 작아 head에 삽입해야 하는 경우 node를 head로 설정
            if prev_node == None:
                self.head = node
            # node를 리스트 중간에 삽입해야 하는 경우 prev_node의 next를 node로 설정
            else:
                prev_node.next = node
            self.count += 1

    def print_all(self):
        if self.count == 0:
            print('')
        else:
            tmp_node = self.head
            while (tmp_node != None):
                print(tmp_node.data, end=" ")
                tmp_node = tmp_node.next


if __name__ == '__main__':
    singly_sorted_linked_list = SinglySortedLinkedList()
    for n in [4, 5, 2, 7, 99, -1, 0, 19]:
        node = Node(n)
        singly_sorted_linked_list.append(node)
    singly_sorted_linked_list.print_all()



728x90