티스토리 뷰
[폰트사이즈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 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 문서 비교
- admin.py
- django
- gitignore
- 엑셀 비교
- 장고 플러스친구 자동응답
- gitlab
- 장고 카톡 자동응답
- 파이썬 독학
- wsgi
- 파이썬 입문
- 이미지 비교
- Tistory
- 파이썬 강좌
- 모바일 스킨 적용
- pycrypto
- GIT
- virtualenv
- 장고
- django chatbot
- chatbot
- 플러스친구 자동응답
- 모바일 테마 적용
- 파이썬 프로그래밍
- Python
- 면접정답
- 면접답변
- PuTTYGen
- 문과 코딩
- 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함