# insert_before(2.5, 3)
def insert_before(self, data, before_data):
if self.head == None:
self.head = Node(data)
return True
else:
node = self.tail
while node.data != before_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
양방향으로 연결되어 있어서 노드 탐색이 양쪽으로 모두 가능

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 search_from_head(self, data):
if self.head == None:
return False
node = self.head
while node:
if node.data == data:
return node
else:
node = node.next
return False
def search_from_tail(self, data):
if self.tail == None:
return False
node = self.tail
while node:
if node.data == data:
return node
else:
node = node.prev
return False
'파이썬' 카테고리의 다른 글
[데이터 분석] 넘파이 모듈 Numpy (0) | 2022.04.19 |
---|---|
[자료구조] 시간복잡도 (0) | 2022.04.18 |
[자료구조] 링크드 리스트 Linked List (0) | 2022.04.18 |
[자료구조] 스택 stack (0) | 2022.04.17 |
[자료구조] 큐queue (0) | 2022.04.17 |