728x90
class Node:
def __init__(self, data):
self.data = data
self.prev = None
self.next = None
class DoublySortedLinkedList:
def __init__(self):
self.head = None
self.count = 0
def append(self, node):
if self.count == 0:
self.head = node
self.count = 1
else:
cur_node = self.head
prev_node = None
# cur_node의 data와 node의 data를 비교하며 삽입 위치 파악
while(cur_node != None and cur_node.data <= node.data):
prev_node = cur_node
cur_node = cur_node.next
# node의 next를 cur_node로 설정
node.next = cur_node
# cur_node가 마지막 노드가 아닌 경우 prev를 node로 설정
if not (cur_node == None):
cur_node.prev = node
# node의 data가 가장 작아 head에 삽입되어야 하는 경우 node를 head로 설정
if (prev_node == None):
self.head = node
# node가 리스트 중간에 삽입되어야 하는 경우 prev_node의 next를 node로 설정
# node의 prev도 prev_node로 설정
else:
prev_node.next = node
node.prev = prev_node
self.count+=1
def print_all(self):
if self.count == 0:
print('')
else:
tmp_node = self.head
while (tmp_node != None):
print(tmp_node.data, end=" ")
tmp_node = tmp_node.next
if __name__ == '__main__':
doubly_sorted_linked_list = DoublySortedLinkedList()
for n in [4,5,2,7,99,-1,0,19]:
node = Node(n)
doubly_sorted_linked_list.append(node)
doubly_sorted_linked_list.print_all()
# -1 0 2 4 5 7 19 99
728x90
'프로그래밍' 카테고리의 다른 글
[소프트웨어공학] 소프트웨어와 프로그램의 차이 (0) | 2020.06.06 |
---|---|
[자료구조] Python 파이썬으로 단일연결 정렬 리스트 구현하기 코드 설명 (0) | 2020.06.02 |
[React.js] create-react-app에서 img 태그에 이미지 소스 넣기 (0) | 2020.06.01 |
[React.js] react-pdf 로 파일 프리뷰 미리보기 하는 법 react-pdf 사용법 예제 (10) | 2020.06.01 |
[React.js] Expected an assignment or function call and instead saw an expression 오류 해결법 (0) | 2020.05.29 |