알고리즘(algorithm)이란? >주어진 문제를 유한한 시간 내에 해결하는 단계적 절차이다. 단계적으로 해결하기 위해 자료구조(data structure)라는 데이터를 조직하고 접근하는 체계적 방식에 대해 학습한다. 어떤 알고리즘이 좋은 알고리즘일까? >1. 직관적
자기 자신을 반복해서 호출하는 함수이다.위 그림과 같이 recursive라는 함수는 자신을 호출하여 print문을 출력한다.그렇다면 이 함수는 언제 끝날까?끝나지 않는다. 왜냐하면 위 함수는 종료 조건이 없기 때문이다.우리는 재귀의 요소를 알아볼 필요가 있다.재귀를 구
연결리스트는 노드라는 구조체로 이루어진 저장하는 선형 자료구조이다. 노드는 자신이 가리키는 데이터와 다음 노드의 주소값을 갖는 포인터 변수로 구성되어 있다.다음 그림과 같이 노드 하나당 데이터 값을 저장하고 다음 노드를 가리키는 구조로 이루어져 있다.배열도 선형 자료구
지난 시간에 알아본 단일 연결리스트는 단방향으로 연결되어 있었다. 이번 시간에 구현해 볼 이중 연결리스트는 단일 연결리스트의 단점인 단방향의 흐름을 보완하여 양방향으로 움직일 수 있다.장점 : prev노드가 있어 한 노드가 다음 노드와 이전 노드를 모두 접근할 수 있다
집합은 유일한 개체를 담는 자료구조이다. 즉 중복이 허용되지 않는다. 예를들면, A란 집합에 {1,2,3}원소가 있고 B란 집합에 {2,3,4} 원소가 있다면 A + B인 C 집합은 {1,2,3,4}가 된다.union(B) : 집합 B와의 합집합intersect(B)
스택이란? >어떠한 자료를 쌓아서 만든 자료구조로 LIFO(Last in First Out)이다. 즉, 가장 마지막에 들어간 데이터가 먼저 접근하는 자료구조이다. 인터넷 창에서 뒤로가기 버튼을 누르면 가장 최근의 페이지로 돌아가는 것, 재귀의 구현 등을 예로 들 수
스택은 나중에 넣은 데이터가 먼저 나오는 FIFO(First In First Out)형식의 자료구조였다면, 큐는 먼저 넣은 데이터가 먼저 나오는 LIFO(Last In First Out)형식의 자료구조이다.큐를 구현할 때 연결리스트를 사용할 수도 있고 배열을 사용할 수
트리는 노드와 간선으로 이루어진 계층적 관계를 표현하는 자료구조이다.스택이나 큐와 같이 선형 구조가 아닌 비선형 구조이다.그림과 같이 나무를 거꾸로 뒤집어 놓은 듯한 형태를 볼 수 있다.노드(Node) : 트리의 구성요소에 해당하는 요소(A,B,C,D...)간선(Edg
트리 1에서 트리의 구성 요소와 이진트리의 종류에 대해서 알아봤다.이번에는 연결리스트를 통해 트리가 어떻게 만들어지는지 살펴보자.트리는 그림과 같이 노드 구조체에 자신의 데이터 값과, left 노드, right 노드를 포함한다.코드로 구현해보면 다음과 같다.노드 생성하