이중 연결 리스트(Doubly linked list)_삽입
코드
#이중 링크드 리스트
class DLinkedList:
#D_L_list에서 쓸 노드
class Node:
def __init__(self, v, n = None, p = None):
self.value = v #저장된 데이터
self.next = n #다음 노드 가리키는 변수
self.prev = p #이전 노드 가리키는 변수
#D_L_List에서 필요한 변수
def __init__(self):
self.head = None #첫 생성시 내부에는 노드가 없음
self.tail = None
#head로 삽입. v : 데이터
def insertNodeBefore(self, v):
#저장된 노드가 없을 경우
if self.head is None:
self.head = self.Node(v)
self.tail = self.head #같은 노드를 가리킴
else:
#self.head : 기존노드, self.head.prev : 기존노드의 prev
self.head.prev = self.Node(v,n=self.head) #1,2번을 동시수행
#self.head.prev : 기존노드의 prev == 새로운 노드
self.head = self.head.prev #3. head를 새로운 노드로 변경
#tail로 삽입. v : 데이터
def insertNodeAfter(self, v):
#저장된 노드가 없을 경우
if self.tail is None:
self.tail = self.Node(v)
self.head = self.tail #같은 노드를 가리킴
else:
#self.tail : 기존노드, self.tail.next : 기존 노드의 next
self.tail.next = self.Node(v,p=self.tail) #1,2번을 동시수행
#self.tail.next : 기존노드의 next == 새로운 노드
self.tail = self.tail.next #3. tail를 새로운 노드로 변경
##테스트
if __name__=="__main__":
dl = DLinkedList()
dl.insertNodeBefore('1st') # head삽입 테스트
dl.insertNodeBefore('2nd') # head삽입 테스트
dl.insertNodeBefore('3rd') # head삽입 테스트
dl.insertNodeAfter('B1st') # tail삽입 테스트
dl.insertNodeAfter('B2nd') # tail삽입 테스트
dl.insertNodeAfter('B3rd') # tail삽입 테스트
설명
Author And Source
이 문제에 관하여(이중 연결 리스트(Doubly linked list)_삽입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@oosiz/이중-연결-리스트Doubly-linked-list삽입저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)