[ 목차 ]
728x90
반응형
1. 더블 링크드 리스트(Doubly Linked List)
- 양뱡향으로 연결되어 있어서 노드 탐색이 양쪽으로 모두 가능
class Node:
def __init__(self, data, prev=None, next=None):
self.prev = prev
self.data = data
self.next = next
class NodeMgmt:
def __init__(self,data):
self.head = Node(data)
self.tail = self.head
def insert(self,data):
if self.head == None:
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 node_print(self):
node = self.head
while node:
print(node.data)
node = node.next
def insert_before(self, data, after_data): # 2.5, 3
if self.head == None:
self.head = Node(data)
return True
else:
node = self.tail # 노드의 끝을 노드에 넣음
while node.data != after_data:
node = node.prev
if node == None:
return False
new = Node(data)
before_new = node.prev
before_new.next = new
new.prev = before_new
new.next = node
node.prev = new
return True
def search_from_head(self, data):
if self.head == None:
return False
ndoe = self.head
while node:
if node.data == data:
return node.data
else:
node = node.next
return False
retdouble_linked_list = NodeMgmt(0)
for data in range(1,11):
double_linked_list.insert(data)
문제
위 코드에서 노드 데이터가 특정 숫자인 노드 앞에 데이터를 추가하는 함수를 만들고 테스트 해보자
반응형
'Python > 알고리즘&자료구조' 카테고리의 다른 글
Python 자료구조&알고리즘 - 트리(Tree), 이진 탐색 (0) | 2023.01.31 |
---|---|
Python 자료구조&알고리즘 - 해쉬 테이블(Hash Table) (0) | 2023.01.30 |
Python 자료구조&알고리즘 - 링크드리스트(Linked List) (0) | 2023.01.28 |
Python 자료구조&알고리즘 - 스택(stack) (0) | 2023.01.27 |
Python 알고리즘&자료구조 - 큐(Queue) (0) | 2023.01.26 |