size() 메서드는 훨씬 간단합니다. 단순히 d_size 값을 반환하면 됩니다. 데이터를 리스트의 맨 처음에 삽입하는 add_first() 메서드를 볼까요?
코드 4-5
def add_first(self, data):
new_node = Node(data) ➊
new_node.next = self.head.next ➋
new_node.prev = self.head ➌
self.head.next.prev = new_node ➍
self.head.next = new_node ➎
self.d_size += 1 ➏
➊ 새로운 노드를 만듭니다.
➋ next는 더미 노드의 다음 노드, 즉 첫 번째 데이터 노드를 가리키도록 합니다.
➌ prev는 리스트의 맨 앞 더미를 가리키도록 합니다.
➍ 첫 번째 데이터 노드의 prev가 새로운 노드를 가리키도록 하고
➎ 더미 노드의 next는 새로운 노드를 가리켜 새로운 노드가 삽입되었습니다.
➏ 데이터 개수를 하나 늘리는 것도 잊어서는 안 됩니다.
add_first 함수는 맨 앞의 더미 노드와 첫 번째 데이터 노드 사이에 새로운 노드를 삽입합니다. 그림으로 삽입 과정을 살펴보겠습니다.
그림 4-7은 새로운 노드를 만든 직후의 모습입니다.
▲ 그림 4-7 add_first( ) 1