티스토리 뷰

[폰트사이즈18 고딕 진하게]



폰트 사이즈 12 고딕


폰트 사이즈 12 고딕


폰트 사이즈 12 고딕


폰트 사이즈 12 고딕


폰트 사이즈 12 고딕


폰트 사이즈 12 고딕













리팩토링 후


class Node:
def __init__(self, data=None, prev=None, next=None): self.data, self.prev, self.next = data, prev, next


class DList:
def __init__(self):
self.head = Node()
self.tail = Node(prev=self.head)
self.head.next = self.tail
self.size = 0

def is_empty(self):
return not bool(self.size)

def insert(self, data, front, rear):
new_node = Node(data, front, rear)
front.next, rear.prev = new_node, new_node
self.size += 1

def insert_front(self, data): self.insert(data, self.head, self.head.next)

def insert_rear(self, data): self.insert(data, self.tail.prev, self.tail)

def get_final(self, index):
assert 0 <= index < self.size, "double linked list out of range"
final_node, cur_index = self.head.next, 0
while cur_index < index:
final_node, cur_index = final_node.next, cur_index + 1
return final_node

def insert_mid(self, data, index):
final_node = self.get_final(index)
self.insert(data, final_node, final_node.next)

def delete_index(self, index):
target = self.get_final(index)
target.prev.next, target.next.prev = target.next, target.prev
self.size -= 1

def __str__(self):
cur = self.head.next
sb = ""
while cur.next:
sb += str(cur.data) + " "
cur = cur.next
return sb


dlist = DList()
dlist.insert_front(1)
dlist.insert_front(2)
dlist.insert_front(3)
print(dlist)
dlist.delete_index(2)
# print(dlist)
# dlist.insert_mid(99, 0)
# dlist.insert_rear(-1)
print(dlist)






리팩토링 전


class Node:
def __init__(self, data=None, prev=None, next=None):
self.data = data
self.prev, self.next = prev, next


class DList:
def __init__(self):
self.head = Node()
self.tail = Node(prev=self.head)
self.head.next = self.tail
self.size = 0

def is_empty(self):
return not bool(self.size)

def insert_front(self, data):
new_node = Node(data, self.head, self.head.next)
first_node = self.head.next
first_node.prev = new_node
self.head.next = new_node
self.size += 1

def insert_rear(self, data):
new_node = Node(data, self.tail.prev, self.tail)
final_node = self.tail.prev
final_node.next = new_node
self.tail.prev = new_node
self.size += 1

def get_final(self, index):
assert 0 <= index < self.size, "double linked list out of range"
final_node, cur_index = self.head.next, 0
while cur_index < index:
final_node = final_node.next
cur_index += 1
return final_node

def insert_mid(self, data, index):
final_node = self.get_final(index)
new_node = Node(data, final_node, final_node.next)
final_node.next = new_node
final_node.next.prev = new_node
self.size += 1

def delete_index(self, index):
final_node = self.get_final(index)
front = final_node.prev
rear = final_node.next
front.next = rear
rear.prev = front
self.size -= 1

def __str__(self):
cur = self.head.next
sb = ""
while cur.next:
sb += str(cur.data) + " "
cur = cur.next
return sb


dlist = DList()
dlist.insert_rear(1)
dlist.insert_rear(2)
dlist.insert_rear(3)
print(dlist)
# dlist.delete_index(0)
# print(dlist)
# dlist.insert_mid(-1, 3)
dlist.insert_rear(-1)
print(dlist)


'python lecture > algorism' 카테고리의 다른 글

[edu] 10진수 > n진수 변환  (0) 2018.12.19
[edu] queue (with node)  (0) 2018.12.11
[edu] 4 와 7 구하기  (0) 2018.12.03
[edu] 가위바위보 승패  (0) 2018.11.22
[edu] 단어 폭탄  (0) 2018.11.21
댓글