본문 바로가기
::public/Python

링크드 리스트(Linked List)

by 해맑은욱 2021. 2. 22.
class Node:
    def __init__(self, data):
        self.data = data
        self.next = None
 
class Node:
    def __init__(self, data, next=None):
        self.data = data
        self.next = next
 
// Node와 Node 연결하기 (포인터 활용)
node1 = Node(1)
node2 = Node(2)
node1.next = node2
head = node1
 
// 링크드 리스트로 데이터 추가하기
class Node:
    def __init__(self, data, next=None):
        self.data = data
        self.next = next
 
def add(data):
    node = head
    while node.next:
        node = node.next
    node.next = Node(data) 
 
node1 = Node(1)
head = node1
for index in range(210):
    add(index)
 
// 링크드 리스트 데이터 출력하기(검색하기)
node = head
while node.next:
    print(node.data)
    node = node.next
print (node.data)
// 1 2 3 4 5 6 7 8 9
 
// 객체지향 프로그래밍으로 구현
class Node:
    def __init__(self, data, next=None):
        self.data = data
        self.next = next
    
class NodeMgmt:
    def __init__(self, data):
        self.head = Node(data)
        
    def add(self, data):
        if self.head == '':
            self.head = Node(data)
        else:
            node = self.head
            while node.next:
                node = node.next
            node.next = Node(data)
        
    def desc(self):
        node = self.head
        while node:
            print (node.data)
            node = node.next
    
    def delete(self, data):
        if self.head == '':
            print ("해당 값을 가진 노드가 없습니다.")
            return
        
        if self.head.data == data:
            temp = self.head
            self.head = self.head.next
            del temp
        else:
            node = self.head
            while node.next:
                if node.next.data == data:
                    temp = node.next
                    node.next = node.next.next
                    del temp
                    return
                else:
                    node = node.next
 
linkedlist1 = NodeMgmt(0)
linkedlist1.desc()
 
for data in range(110):
    linkedlist1.add(data)
linkedlist1.desc()
// 0 1 2 3 4 5 6 7 8 9
 
linkedlist1.delete(4)
linkedlist1.desc()
// 0 1 2 3 5 6 7 8 9
 
linkedlist1.delete(9)
linkedlist1.desc()
// 0 1 2 3 5 6 7 8
cs

'::public > Python' 카테고리의 다른 글

스택(Stack)  (0) 2021.02.18
큐(Queue)  (0) 2021.02.18
배열(Array)  (0) 2021.02.18
reference  (0) 2021.02.18