알고리즘

·알고리즘
1. 단일 연결 리스트각 노드는 자신의 다음 노드(next)에 대한 정보만 가지고 있다.따라서 리스트의 끝에서 이전 노드(prev)로 되돌아갈 방법이 없다.가장 마지막 노드를 삭제하려면 마지막 노드 직전의 노드를 찾아야 하기 때문에, head에서부터 시작해 리스트를 처음부터 탐색해야 한다. 따라서 시간 복잡도는 O(n)이다.즉, tail의 정보를 알고 있더라도, 이전 노드로 돌아가는 경로가 없기 때문에 첫 번째 노드부터 마지막 노드 직전까지 모두 순차적으로 탐색해야 한다.class Node: def __init__(self, value=0, next=None): self.value = value self.next_ = nextclass LinkedList(object): ..
·알고리즘
1. Head만 있는 단일 연결 리스트이 경우 리스트의 시작점(head)는 알 수 있지만 끝점(tail)에 대한 정보는 없다.새로운 노드를 리스트의 마지막에 추가할 때, 반드시 첫 번째 노드(head)부터 시작하여 모든 노드를 순차적으로 탐색하여 마지막 노드에 도달해야한다. 리스트의 크기가 클수록 시간이 더 오래 걸리며, 시간 복잡도는 O(n)이다. 여기서 n은 리스트의 길이이다.class Node: def __init__(self, value=0, next=None): self.value = value self.next = next class LinkedList(object): def __init__(self): self.size = 0 ..
sejinezy
'알고리즘' 카테고리의 글 목록