자료구조 6

[자료구조] 그래프 (Graph)

그래프란?그래프는 정점(vertex: V)과 정점들을 연결하는 간선(edge: E)으로 구성된 자료구조이다. 예를 들어 지하철 노선도를 그래프라고 할 수 있다.그래프는 트리와는 달리 순환이 발생해도 된다. 순환이 발생하지 않는 무방향 연결 그래프를 트리라고 할 수 있다. 트리도 그래프의 한 종류인 것이다.  그래프 용어 정의노드 또는 정점 (Node or Vertex): 그래프의 기본 단위로 각 노드는 데이터를 포함할 수 있다.간선 또는 변 (Edge): 두 노드를 연결하며 방향이 있을 수도 있고 없을 수도 있다.정점의 차수 (Degree): 하나의 정점에 근접하는 변의 개수를 말한다. 모든 정점의 차수의 합은 변의 개수의 2배이다. 그리고 그래프에서 차수가 홀수인 정점의 개수는 짝수이다.내차수 또는 진..

CS/자료구조 2024.06.26

[자료구조] 트리 (Tree)

트리란?트리는 노드들로 구성된 자료구조로, 주로 계층적 구조를 표현하는 데 사용한다. 노드들간에 부모-자식 관계를 통해 트리를 구성한다.위 그림에서 선으로 연결된 관계를 부모-자식 관계라고 부른다. 트리 용어 정의노드 (Node): 정보 항목과 다른 노드로의 가지(branch)로 구성된다.루트 노드 (Root Node): 트리의 최상위 노드이며, 트리는 단 하나의 루트 노드만을 가질 수 있다.부모 노드 (Parent Node): 특정 노드의 상위 노드를 말한다.자식 노드 (Child Node): 특정 노드의 하위 노드를 말한다.형제 노드 (Sibling Node): 동일한 부모 노드를 가지는 노드들을 말한다.잎 노드 | 말단 노드 (Leaf Node | Terminal Node): 자식 노드가 없는 노드..

CS/자료구조 2024.06.22

[자료구조] 연결 리스트 (Linked-List)

연결 리스트란?연결 리스트는 노드들로 구성되어 있다. 위 그림에서 각각의 큰 직사각형들이 하나의 노드이다. 노드는 데이터 영역과 링크(포인터) 영역으로 구성되어 있다. 데이터 영역은 데이터를 저장하는 공간이고 링크 영역은 다음 노드를 가리키는 역할을 한다. 연결 리스트의 특징연결리스트의 가장 큰 특징은 데이터를 삽입/삭제할 때, 노드를 추가/삭제하면 되므로 미리 크기를 정의하지 않아도 된다는 것이다. 연결리스트는 필요에 따라 크기를 동적으로 조절할 수 있다. 연결리스트의 다른 특징은 다음과 같다.삽입 및 삭제의 효율성: 데이터의 삭제와 삽입 모두 삽입하는 위치의 전 노드의 포인터 또는 삽입하는 노드의 포인터를 조정하기만 하면 된다. 따라서 시간복잡도는 O(1)로 효율적이다.임의 접근(random acce..

CS/자료구조 2024.06.18

[자료구조] 큐 (Queue)

큐란?큐는 스택과 마찬가지로 컴퓨터에 있어서 중요한 자료구조 중 하나이다.큐는 후입선출(LIFO)인 스택과 달리 선입선출(First-In First-Out: FIFO) 구조를 갖는 자료구조이다. 스택에서는 접시 더미를 예로 들었다면 큐에서는 음식점 대기줄을 예로 들 수 있다. 음식점의 대기줄에서는 먼저 온 사람이 먼저 식당에 들어갈 수 있다.큐는 선입선출 구조이므로 먼저 들어온 데이터가 먼저 나간다. 큐의 연산큐의 주요 연산은 다음과 같다.Enqueue(): 큐의 끝에 새로운 요소를 추가(삽입)Dequeue(): 큐의 앞에서 요소를 제거(제거)front(): 큐의 맨 앞에 있는 요소를 제거하지 않고 반환rear(): 큐의 맨 뒤에 있는 요소를 제거하지 않고 반환 큐의 구현과 예시 (JAVA)큐를 구현하는..

CS/자료구조 2024.06.15

[자료구조] 스택 (Stack)

스택이란?스택은 컴퓨터에서 매우 자주 사용되는 자료구조이기 때문에 굉장히 중요한 자료구조이다.Stack이라는 단어를 단어사전에 검색하면 "무더기(더미)"라는 결과를 얻을 수 있다. 스택은 말 그대로 쌓아놓은 무더기라고 할 수 있다. 식당에서 접시를 쌓아두고 사용하는 것을 상상해보자. 그릇을 사용하려면 맨 위에 있는 그릇을 들어야 한다. 그리고 그릇을 더 추가하려고 하면 맨 위에 새로운 그릇을 두어야 한다. 이것이 바로 스택이다.스택은 그림과 앞서 말했던 그릇 예시에서 볼 수 있듯이 후입선출(Last-In First-Out: LIFO) 구조를 갖는 자료구조이다. 스택에서는 나중에 들어온 데이터가 처음으로 나가게 된다. 스택의 특징스택의 가장 큰 특징은 후입선출(LIFO) 구조를 갖는다는 것이다. 다른 특징..

CS/자료구조 2024.06.15

[자료구조] 배열 (Array)

배열이란?배열은 연속된 공간에 번호(인덱스)와 그에 대응하는 데이터들로 이루어진 자료구조이다.위 그림처럼 배열은 0부터 시작하는 각각의 인덱스에 해당하는 데이터를 저장할 수 있는 형태이다.배열은 대부분의 프로그래밍 언어에서 한 가지의 데이터 타입만을 저장하는 것을 허용한다. 예를 들어 int형 배열을 선언하면 각각의 데이터는 모두 int형 데이터이다. 배열의 형태 (JAVA)자바(JAVA)에서는 배열을 다음과 같이 선언할 수 있다.//배열을 선언하고 초기화하는 방법String[] array = {"a", "b", "c", "d", "e"};또는//배열을 선언하고 나중에 값을 할당하는 방법String[] array = new String[5];array[0] = "a";array[1] = "b";array..

CS/자료구조 2024.06.13