컴퓨터 프로그래밍/자료구조
자료구조_링크드리스트_7_삽입연산
깝돌이
2020. 5. 19. 20:26
두가지 경우가 있을 수 있습니다.
1) 가장 마지막 순서에 삽입 할 때 입니다.
- append 연산이랑 같습니다.
2) 두 노드 사이에 삽입 할 때 입니다.
class Node:
"""링크드 리스트의 노드 클래스"""
def __init__(self, data):
self.data = data # 노드가 저장하는 데이터
self.next = None # 다음 노드에 대한 레퍼런스
class LinkedList:
"""링크드 리스트 클래스"""
def __init__(self):
self.head = None
self.tail = None
def insert_after(self, previous_node, data):
'''링크드 리스트 주어진 노드위에 삽입 연산 메소드'''
new_node= Node(data)
#가장 마지막 순서에 삽입
if previous_node is self.tail:
self.tail.next = new_node
new_node = self.tail
#두 노드사이에 삽입
else:
new_node.next = previous_node.next
previous_node.next = new_node
잘 구현이 되었는지 확인해 보겠습니다.
새로운 링크드 리스트 생성
my_list = LinkedList()
#링크드 리스트에 데이터 추가
my_list.apppend(2)
my_list.apppend(3)
my_list.apppend(5)
my_list.apppend(7)
print(my_list)
#인덱스 2에 있는 노드 접근
node_2 = my_list.find_node_at(2)
#인덱스 2 뒤에 6 삽입
my_list.insert_after(node_2, 6)
print(my_list)
#헤드노드 접근
head_node = my_list.head
my_list.insert_after(head_node, 9)
print(my_list)