[자료구조] 7. 양방향 연결리스트 (Doubly Linked Lists)
양방향 연결 리스트 (Doubly Linked Lists) 지금까지 다루었던 연결 리스트의 경우에는 앞에서 뒤로만 진행이 가능하였다. 하지만, 양방향 연결 리스트의 경우 앞으로도 뒤로도 진행이 가능하다.즉, 단방향이 아니라 양방향으로 진행이 가능하다. 양방향 연결 리스트는 이전 연결 리스트와 달리 ...
양방향 연결 리스트 (Doubly Linked Lists) 지금까지 다루었던 연결 리스트의 경우에는 앞에서 뒤로만 진행이 가능하였다. 하지만, 양방향 연결 리스트의 경우 앞으로도 뒤로도 진행이 가능하다.즉, 단방향이 아니라 양방향으로 진행이 가능하다. 양방향 연결 리스트는 이전 연결 리스트와 달리 ...
더미 노드 (Dummy Node) 연결 리스트는 포인터를 이용하기 때문에 선형 배열보다 삽입과 삭제가 유연하다는 장점을 가지고 있다. 하지만, 연결 리스트에 새로운 데이터 노드를 추가/삭제하는 과정에서 선형 탐색이 이루어진다는 단점을 가지고 있다. 위의 단점에 의해 발생하는 비효율성 문제를 줄이기 위해 prev 노드(...
추상적 자료 구조 (ADT) 추상적 자료 구조(Abstract Data Type, ADT)는 숫자형, 문자열, 리스트, 튜플, 셋, 딕셔너리 등의 자료 구조와 해당 자료 구조에서 일어날 수 있는 삽입, 삭제, 순회, 정렬, 탐색 등의 연산들의 집합을 정의한 것이다. 즉, 자료가 어떤 형태의 데이터 타입으로 저장되며, 해당 데이터에 필요한 작...
알고리즘의 복잡도 알고리즘의 복잡도(Complexity)는 문제 풀이 방식 혹은 코드가 얼마나 복잡한지 혹은 단순한지를 의미하는 용어가 아니다. 해당 용어는 문제의 크기(일반적으로 데이터 원소의 개수)가 커짐에 따라서 얼마나 큰 시간을 혹은 리소스를 요구하는지를 의미한다. 알고리즘의 복잡도는 소요되는 성질에 따라 다음...
재귀함수(Recursive Functions) 란? 하나의 함수 혹은 알고리즘을 반복적으로 호출하여 작업을 수행하는 성질을 의미한다. 재귀 알고리즘(Recursive Algorithm)이라고 불리는 것들이 있으나,재귀(Recursive) 자체는 알고리즘이 아니라 성질에 해당한다. 해당 성질을 이용해서 생각보다 많은 종류의 ...
정렬(Sort) 이란? 복수의 원소로 주어진 데이터를 정해진 기준에 따라 새로 늘어놓는 작업이다. 정렬 알고리즘에는 여러 종류가 있지만, 파이썬의 리스트(list)를 이용한다면, 직접 정렬 알고리즘을 구현할 필요는 없다. 왜냐하면, 리스트(list)에 내장된 정렬 기능이 있기 때문이다. (1) 내장함수...