[알고리즘] 연결 리스트 (2)

문제

생성된 연결 리스트의 맨 처음에 있는 노드를 삭제하는 프로그램을 작성하라. (python)

소스코드

class Node:
    def __init__(self, elem, link=None):
        self.data = elem  # 데이터 필드 생성 및 초기화
        self.link = link  # 링크 필드 생성 및 초기화

class LinkedList:
    def __init__(self):
        self.tail = None 
    
    def isEmpty(self): return self.tail == None
    
    def enqueue(self, item):
        node = Node(item, None)
        if self.isEmpty():
            node.link = node # n의 링크가 자신을 가리키도록 함
            self.tail=node # tail이 n을 가리키도록 함
        else:
            node.link = self.tail.link # n의 링크가 front을 가리키도록 함
            self.tail.link = node # tail의 링크가 n을 가리키도록 함
            self.tail = node
    
    def dequeue(self):
        if not self.isEmpty():
            data = self.tail.link.data
            if self.tail.link == self.tail:
                self.tail = None
            else:
                self.tail.link = self.tail.link.link
            return data
    
    def display(self, msg='LinkedList:'):
        print(msg, end='')
        if not self.isEmpty():
            node = self.tail.link # front부터 출발 
            while not node == self.tail : # rear가 아닌 동안
                print(node.data, end='->') # node 출력
                node = node.link #이동 
            print(node.data, end='->') # 마지막으로 rear 출력 
        print() #한줄 띄우기 

q = LinkedList() 

q.enqueue(input("노드 #1 데이터 : "))
q.enqueue(input("노드 #2 데이터 : "))
q.enqueue(input("노드 #3 데이터 : "))
q.display('생성된 연결 리스트 : ')
q.dequeue()
q.display('첫번째 노드 삭제 후 연결 리스트 : ')

실행 결과

result

카테고리:

업데이트: