목차스택(Stack)주의할 점큐(Queue)스택과 큐의 메서드 정리양방향 큐(Deque)ArrayDeque와 LinkedList의 성능 차이LinkedList의 특징ArrayDeque의 특징ArrayDeque와 LinkedList 비교 정리스택과 큐를 사용할 때는 Deque(ArrayDeque)를 사용하자스택과 큐의 활용스택의 활용큐의 활용참고 자료스택(Stack)스택의 핵심 키워드는 LIFO(Last In First Out)이다. 마지막(최근)에 들어온 값이가장 먼저 나가는 특징을 갖는 자료구조이다.refs) https://www.programiz.com/dsa/stack해당 그림만으로도 모든 흐름을 알 수 있다. 가장 나중에 들어온 3번이 pop(스택에서 값을 제거하는 연산)을 했을 때, 가장 먼저 ..
Class DoublyLinkedList: def __init__(self,item): self.nodeCount = 0 self.head = None self.tail = None self.head.prev = None self.head.next = self.tail self.tail.prev = self.head self.tail.next = None 기존의 Linked List는 다음 노드를 가리키는 Link만 있었다면 양방향(이중 연결) 리스트는 이전 노드를 가리키는 Prev Link도 갖고 있다. Doubly Linked List는 Dummy Node가 head와 tail에 둘 다 있다. 이로 인해 노드의 변경에 작성되는 코드가 간결해진다. 하지만 한 노드에 Data와 두 개의 Link의 값을 ..
# 원소 삽입 def insertAt(self, pos, newNode): if pos self.nodeCount + 1: return False if pos == 1: newNode.next = self.head self.head = newNode else: if pos == self.nodeCount + 1: # 삽입위치가 맨끝일 경우 바로 tail로 이동 prev = self.tail else: prev = self.getAt(pos - 1) newNode.next = prev.next prev.next = newNode if pos == self.nodeCount + 1: self.tail = newNode self.nodeCount += 1 return True Linke..
데이터의 원소들의 순서를 지어 늘어놓는다는 점은 Linear array와 비슷한 면이 있으나 약간의 차이가 있다. Linear array : "번호가 붙여진 칸에 원소들을 채워넣는" 방식 Linked list : "원소 하나하나를 줄줄이 실로 엮어넣는" 방식 Linked list는 노드(Data+Link)로 구성되어 있으며, 각 노드의 Link는 다음 노드의 Data를 가리킨다. Linked List의 장점 원소를 삽입하거나 삭제하기가 쉽다 (소요시간 짧음) 이러한 연산이 자주 일어나는 운영체제 내부에서 많이 이용된다. Linked List의 단점 Linked list의 Data와 Link가 모두 메모리에 저장되므로 메모리 요구량이 array보다 더 크다. 원소 탐색에 있어서 해당 인덱스를 알면 바로 찾..
파이썬에서 List는 자바의 Array 보다는 더 융통성 있는 자료형이다. 보통 Array는 같은 종류의 데이터를 나열하는데 비해 List는 서로 다른 데이터들을 저장할 수 있다. 예) a = ['Programmers',15,'Apple'] Array는 개념적인 용어( 데이터를 늘어놓은 형태 )이며, List는 파이썬에서 사용하는 데이터형이라고 한다. List는 연산의 종류에 따라 그 속도가 원소의 개수에 비례하거나 무관할 수 있다. 1) 원소 추가 or 마지막 원소 꺼내기 원소 추가 : (List).append() 원소 꺼내기 : (List).pop() 이는 맨 끝 요소를 추가하거나 빼는 것이므로 원소의 개수와 상관없이 실행시간이 일정하다. 2) 원소 삽입 or 원소 삭제 원소 삽입 : (List).i..