class Node:
def __init__(self, data, prev = None, next = None):
self.data = data
self.prev = prev
self.next = next
class NodeMgmt:
def __init__(self, data):
self.head = Node(data)
self.tail = self.head
def add(self, data):
if self.head == "":
self.head = Node(data)
self.tail = self.head
else:
node = self.head
while node.next:
node = node.next
new = Node(data)
node.next = new
new.prev = node
self.tail = new
def desc(self):
node = self.head
while node:
print(node.data)
node = node.next
def insert_front(self, data, index):
node = self.head
new = Node(data)
for i in range(index-1):
node = node.next
temp = node.next
node.next = new
new.next = temp
new.prev = node
if new.next == None:
self.tail = new
def insert_back(self, data, index):
node = self.head
new = Node(data)
if (index == 1):
temp = node
self.head = new
new.next = temp
node.prev = new
else:
NodeMgmt.insert_front(self, data, index-1)
이중 연결리스트이다.
전에 있던 연결리스트와 다르게 리스트의 뒤로도 움직일 수 있다.
맨 처음을 가리키는 head와 맨 마지막을 가리키는 tail이 있다.
전에 있던 연결리스트와 다르게 새로운 노드를 추가할 때 전에 있던 노드의 next와 prev를 둘 다 고려해줘야 한다.
'Algorithms > 패캠 알고리즘 강의' 카테고리의 다른 글
시간 복잡도(2) (0) | 2020.01.21 |
---|---|
시간 복잡도(1) (0) | 2020.01.20 |
연결 리스트(3) (0) | 2020.01.17 |
연결리스트(2) (0) | 2020.01.17 |
연결 리스트 (1) (0) | 2020.01.17 |