2020. 10. 24. 20:33ㆍIT공부/자료구조&알고리즘 연습
링크드 리스트 장단점
장점
--> 미리 데이터 공간을 할당하지 않아도 됨
단점
--> 배열은 두개의 데이터를 저장할 공간만 가지면 되는데 링크드 리스트는 각 데이터마다 다음 노드를 가리킬 주소 (포인터)를 별도로 가지고 있어야 한다 – 저장공간 효율 높지 않아
--> 배열은 인덱스 번호가 있어 바로 인덱스 번호로 값을 찾을 수 있으나 링크드 리스트는 연결 정보를 찾는 시간이 필요해 접근 속도가 느려
--> 중간 데이터를 삭제하거나 연결된 데이터 중간에 추가적으로 노드를 추가할 경우 주소를 변경해야 하는 재구성 작업 필요
링크드 리스트와 복잡한 기능1 =>링크드 리스트 데이터 사이에 데이터 추가
node = head
while node.next:
print(node.data)
node = node.next
print (node.data)
node3 = Node(1,5)
node = head
search =True
while search:
if node.data ==1:
search ==False
else:
node = node.next
node_next = node.next
node.next = node3
node3.next = node_next
node = head
while node.next:
print(node.data)
node = node.next
print (node.data)
è 결과 : 1 1.5 2 3 4 5 6 7 8 9
파이썬 객체지향 프로그래밍으로 링크드 리스트 구현하기
class Node:
def __init__(self, data, next=None): //
self.data = data
self.next = next
class NodeMgmt:
def __init__(self, data):
self.head = Node(data)
def add(self, data):
if self.head == '':
self.head = Node(data)
else:
node = self.head
while node.next:
node = node.next
node.next = Node(data) //지금
def desc(self):
node = self.head
while node:
print (node.data)
node = node.next
linkedlist1 = NodeMgmt( 0 )
linkedlist1.desc ( )
for data in range( 1, 10) :
linkedlist1.add(data)
linkedlist1.desc( )
-> 결과 : 0 1 2 3 4 5 6 7 8 9
==> 링크드 리스트의 복잡한 기능 2 ( 특정 노드 삭제 )
위에 만든 코드에 추가
def delete(self, data):
if self.head == '':
print ("해당 값을 가진 노드가 없습니다.")
return
if self.head.data == data:
temp = self.head
self.head = self.head.next
del temp
else:
node = self.head
while node.next:
if node.next.data == data:
temp = node.next
node.next = node.next.next
del temp
return
else:
node = node.next
강의에 대해 정확하게 알고 싶다면
'IT공부 > 자료구조&알고리즘 연습' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] {코딩테스트인강} 100% 환급 챌린지 8회차 미션 (0) | 2020.10.26 |
---|---|
[패스트캠퍼스 수강 후기] {코딩테스트인강} 100% 환급 챌린지 7회차 미션 (0) | 2020.10.25 |
[패스트캠퍼스 수강 후기] {코딩테스트인강} 100% 환급 챌린지 5 회차 미션 (0) | 2020.10.23 |
[패스트캠퍼스 수강 후기] {코딩테스트인강} 100% 환급 챌린지 4 회차 미션 (0) | 2020.10.22 |
[패스트캠퍼스 수강 후기] {코딩테스트인강} 100% 환급 챌린지 3 회차 미션 (0) | 2020.10.21 |