본문 바로가기

알고리즘 & 자료구조/자료구조

(5)
[자료구조] 단일 연결 리스트(Singly Linked List) 단일 연결 리스트 단반향으로 노드들을 연결한 간단한 자료 구조 구현 // 연결 리스트의 노드 클래스 public class SinglyLinkedListNode { public T Data { get; set; } public SinglyLinkedListNode Next { get; set; } public SinglyLinkedListNode(T data) { this.Data = data; this.Next = null; } } public class SinglyLinkedList { // head를 사용하여 전체 리스트를 순차적으로 엑세스 private SinglyLinkedListNode head; public void Add(SinglyLinkedListNode newNode) { if (he..
[자료구조] 연결 리스트(Linked List) 연결 리스트 각 노드가 데이터와 포인터를 가지고 있으며, 노드들이 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조
[자료구조] 원형 배열(Circular Array) 원형 배열 고정된 크기의 배열을 마치 양 끝이 연결된 것처럼 사용할 수 있게 한 자료구조. 배열의 크기가 N일 때, 배열의 마지막 요소(N-1)에 도착하면, 다음 배열요소는 첫번째 요소(0)로 순환하는 구조. 처음 들어간 데이터가 먼저 나오는 FIFO(First in first out) 구조의 데이터 버퍼에 적합. => 큐(Que) 비원형의 일반 배열은 마지막에 들어간 데이터가 먼저 나오는 LIFO(Last in first out) 구조의 버퍼에 적합하다 구현 mod 연산자를 사용하여 마지막 배열의 다음인덱스가 첫 배열 인덱스로 돌아오도록 구현 public static void printArray() { //원형탁자에 8명의 사람이 있다고 가정. // a, b, c, d, e, f, g, h // 이 때..
[자료구조] 배열(Array) 배열이란? 배열은 연속적인 메모리 상에 동일한 데이터 타입의 요소들을 순차적으로 일렬로 저장하는 자료구조. 순차적으로 나열된 배열요소는 각 요소마다 인덱스가 붙는다. ex) x[0], x[1].... 배열의 크기는 고정적이다. 배열 인덱스를 사용할 경우 배열요소에 즉시 엑세스할 수 있다. 배열의 차원(Dimension) 한 배열요소를 선택하기 위해 사용하는 인덱스의 수 C#은 32차원 배열까지 지원한다. 가변 배열(Jagged Array) 배열의 요소가 배열타입인 경우 ex) x[0] = new int[2]; x[1] = new int[6]{1, 2, 3, 4, 5, 6}; x[2] = new int[3]{9, 8, 7}; 동적 배열 (Dynamic Array) 정적 배열은 초기화 시 지정한 고정크기를 ..
[자료구조] 자료구조(Data Structure)의 정의 자료구조 (Data Structure) 데이터를 효율적으로 접근하고 조작할 수 있도록 데이터의 구조를 만든 것 자료구조마다 장단점이 있기 때문에 자신의 목적에 맞는 자료구조를 선택해야 한다. 잘 설계된 자료구조를 사용하면 시간과 메모리를 효율적으로 사용할 수 있다. 추상자료형 (ADT) 알고리즘이 문제를 해결하는데 필요한 자료의 형태와 그 자료를 사용한 연산들을 수학적으로 정의한 모델 추상자료형과 자료구조의 차이 추상자료형은 무엇이 구현되어야 하는지 자료의 논리적 형태를 정의 자료구조는 어떻게 구현할 지를 파악해서 물리적 형태로 구현하는 것 예를 들어 스택(Stack)은 추상 자료형으로 마지막에 입력된 데이터가 먼저 사용된다. 스택은 자료구조 구현 측면에서 배열로도 구현할 수 있고, 연결 리스트 형태로 ..