- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- 자료구조
- 대학시험
- 파이썬 강의
- 파이썬 강좌
- 면접 파이썬
- 기말시험
- python 중간고사
- 쉬운 파이썬
- gdrive
- python data structure
- 셀레니움
- 프로그래밍
- 알고리즘 강의
- c언어
- 중간시험
- 파이썬 자료구조
- 크롤링
- 파이썬활용
- 파이썬
- Crawling
- 파이썬 알고리즘
- 파이썬 입문
- 채용문제
- 코딩문제
- 자료구조 강의
- 파이썬3
- selenium
- 알고리즘 강좌
- 코딩시험
- 알고리즘
목록파이썬 알고리즘 (26)
반원 블로그
삭제 삽입과 마찬가지로 삭제 또한 head를 통한, tail을 통한 삭제 2가지가 있습니다. 저장된 노드가 없을 때 당연히 삭제연산 경우에서 제외시켜야됩니다. #이중 링크드 리스트 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 insertN..
출력 이중 연결 리스트의 head를 통한 출력은 단일 연결 리스트와 동일합니다. 그래서 코드를 그대로 가져오겠습니다. 저장된 노드가 없을 때 그냥 없다라는 출력을 해주겠습니다. 저장된 노드가 있을 때(head) 위에서 말했든 단일 연결 리스트와 동일합니다. 코드 구현 #이중 링크드 리스트 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 #첫 생성시 ..
삽입 이중 연결리스트의 삽입 방법은 2가지입니다. 단일 연결 리스트처럼 head로 넣는 방법과 같은 방법으로 tail을 통해 넣는 방법. 각 상황에 따라 노드의 next와 prev값을 다음노드와 이전노드로 지정해주면 됩니다. 저장된 노드가 없는 경우(head,tail) 아무런 노드도 없는 경우는 head와 tail 값이 None입니다. 따라서 head를 통해 넣든, tail을 통해 넣든 결과가 같습니다. 코드 구현 #이중 링크드 리스트 class DLinkedList: #D_L_list에서 쓸 노드 class Node: def __init__(self, v, n = None, p = None): self.value = v #저장된 데이터 self.next = n #다음 노드 가리키는 변수 self.pre..
단일 링크드 리스트를 응용한 이중 연결 리스트에 대해 알아봅니다. 기본구조 단일 연결 리스트는 단방향(head쪽)으로 밖에 삽입, 삭제, 조회를 못합니다. 이중 연결 리스트는 양방향 이동을 구현하므로써 다음 노드와 이전 노드의 이동이 가능하도록 구성되있습니다. 때문에 노드에 변수 next로 다음노드를, 변수 prev로 이전노드를 지정하여 이동할 수 있도록 합니다. 또한 리스트에서 변수 head만 아니라 변수 tail도 만들어 리스트의 앞과 뒤로 접근 가능하도록 하겠습니다. 코드 구현 #이중 링크드 리스트 class DLinkedList: #D_L_list에서 쓸 노드 class Node: def __init__(self, v, n = None, p = None): self.value = v #저장된 데이..
탐색 출력에서 했던 방식과 동일하게 노드를 이동하되, 찾고자 하는 데이터를 가진 노드가 발견되면 이동을 중지합니다. 찾고자 하는 값을 찾으면 해당 노드가 몇번째인지를 반환하고, 못찾으면 탐색실패의 의미를 None을 반환시킵시다. 코드 구현 #단일 링크드 리스트 class SLinkedList: #S_L_list에서 쓸 노드 class Node: def __init__(self, v, n = None): self.value = v #저장된 데이터 self.next = n #다음 노드 가리키는 변수 #S_L_List에서 필요한 변수 def __init__(self): self.head = None #첫 생성시 내부에는 노드가 없으므로 #삽입 def insertNode(self, v): #추가할 데이터 #만일..
삭제 먼저 삭제되는 데이터에 대한 처리를 얘기하려합니다. C언어의 경우 메모리의 할당 및 해제를 직접 코드에 적어줘야합니다.(malloc과 free) 즉, 관리에서 벗어날 데이터는 할당되었던 메모리를 해제하는 것까지 신경써야됩니다. 하지만 JAVA나 Python은 관리에서 벗어난 데이터의 경우 알아서 처리해주는 가비지 컬렉션(Garbage Collection) 개념을 사용합니다. 그래서 우리는 삭제된 데이터의 메모리 해제는 신경쓰지않고, 관리 체계에 대해서만 생각하면 됩니다. 저장된 노드가 없을 때 당연히 중지시켜야됩니다. #단일 링크드 리스트 class SLinkedList: #S_L_list에서 쓸 노드 class Node: def __init__(self, v, n = None): self.valu..