목록자료구조 (4)
스토리지

using System; namespace Study01 { public class Node { public T data; public Node next; public Node(T data) { this.data = data; } } public class Queue { private Node head; private Node tail; public Queue() { head = tail = null; } public void Enqueue(T data) { if(head == null) { head = new Node(data); tail = head; return; } tail.next = new Node(data); tail = tail.next; } public T Dequeue() { T ret..
● 정의 - 선입선출 방식의 자료구조(FIFO), 현실에서의 줄 서는 것과 비슷한 구조이다. 배열로 구현 (원형배열) Queue의 초기 상태에서 Front와 Rear 인덱스는 -1로 설정 데이터 추가 시, A[0]에 값을 넣고 Front와 Rear는 0이 된다. 데이터를 추가할 때(Enqueue), Queue가 가득 찬 상태인지 체크하고, 가득차지 않았으면 (Rear+1)%Length 위치로 이동하여 데이터를 넣는다. 가득 찬 경우는 (Rear+1) % Length == Front와 같이 표현할 수 있다. 데이터를 제거 할 때(Dequeue), Queue가 비어 있는지 체크하고 비어있지 않으면 데이터를 읽고 Front를 하나 증가시킨다. Front = (Front+1)%Length로 표현이 가능하다. Q..

배열이 꽉 찰때마다 크기가 2배로 늘어나는 배열 Add 연산 count가 배열의 마지막 인덱스보다 같거나 큰지 확인. 더 크면 현재 배열의 크기의 2배의 새로운 임시배열을 생성. / 작으면 4번으로 바로 이동. 기존 배열의 원소를 복사 후 원래 배열이 참조하던것을 임시배열을 참조하게 함. 현재 count인덱스에 element를 넣은 후 count + 1. Get 연산 count가 배열의 길이보다 작은지 확인. 작으면 배열이 꽉차지 않았다는 것을 의미하므로 그 인덱스의 값을 리턴, 크면 배열의 인덱스를 벗어나므로 그 자료형의 기본을 리턴 후 함수 종료. ( 삼항 연산자를 사용하면 편함 ) Print 배열을 한번이라도 확장하였으면 배열을 꽉 채워서 데이터를 넣지않는 이상 무조건 뒷부분에 쓸모없는 값이 들어가..
정의 데이터를 효율적으로 액세스하고 조작할 수 있도록 데이터의 구조를 만들어 저장하고 관리하는 것. 추상 자료형 (Abstract Data Type, ADT) 자료구조를 추상화한 것. 구현을 생각하지 않고 무슨 기능이 있는지만 생각함. ex) Stack 자료구조는 push, pop과같은 기능들만 알고있으면 된다. 그 안이 어떻게 구현되어 있는지는 궁금하지않다. Data Structure와 Abstract Data Type의 차이 - 구현의 차이 구분 자료구조 이름 선형 (자료들이 일직선상으로 나열되어있음) 배열로 구현된 모든 자료구조, Linked List로 구현된 모든 자료구조 비선형 (일직선으로 나열되어있지 않음) Tree, Graph 등등