728x90
728x90
큐(Queue)란? - 선입선출(先入先出) 구조 - FIFO(First-In-First-Out) Enqueue와 Dequeue - Enqueue : 저장공간에 데이터를 집어넣는 행위 - Dequeue : 저장공간에서 데이터를 빼내는 행위 - Stack과 다르게 데이터 입/출구가 다르다(Rear / Front) Enqueue Dequeue 배열로 구현 인덱스가 꽉 차면 더 이상 데이터가 입력되지 않는다.(OutofIndexLayer 출력) 인덱스 = Rear % 배열의 크기 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace queue..
스택(Stack)이란 - Stack : 쌓다의 의미 - 후입선출(後入先出) 구조 - LIFO(Last - In - First - Out) - 휴대폰 앱의 화면 이동 방식 / 브라우저의 뒤로가기 / Ctrl+Z(Undo) - 스택은 한 번에 한 개의 데이터만 꺼낼 수 있다(하나씩 꺼낸다) - Push(삽입)와 Pop(삭제) - Push(Data) : 저장공간에 데이터를 집어넣는 행위 스택에 데이터가 꽉 차면 오버플로우(Overflow) 현상이 발생. IsFull() 함수로 확인할 수 있음 - Pop() : 저장공간에서 데이터를 빼내는 행위, 최상단의 데이터를 가리킴 스택에 데이터가 비게 되면 언더플로우(Underflow) 현상이 발생. IsEmpty() 함수로 확인할 수 있음 - Peek() : 스택의 최..
연결리스트(Linked List) 단순 연결 리스트(Singly Linked List) : 모든 데이터 타입을 가져올 수 있음 - ArrayList는 중간에 데이터를 추가/삭제 시 맨 뒤에 새로운 칸을 생성 후 한 칸씩 밀어내서 작업(시간이 오래걸림) - Linked List는 중간에 데이터를 바로 추가/삭제 할 수 있기 때문에 작업이 빠름 - 추가 데이터에 대한 연산 불필요, 구현의 어려움, 탐색 연산의 비용이 높음 이중 연결리스트(Doubly Linked List) - 양방향 탐색이 가능 - 노드에 이전 노드와 다음 노드를 가리키는 포인터를 가지고 있다. LinkedList number = new LinkedList(); number.AddFirst(10); //10 number.AddLast(20)..
ArrayList : 내부적으로 배열을 사용 LinkedList : 링크 포인터를 사용 List : 제네릭 타입 배열의 특징 - 생성 시 사용할 공간을 미리 할당한다. - 인덱스를 사용 데이터 접근에 빠르다. - 데이터의 크기를 변경하지 못한다. 리스트의 특징 - 데이터의 추가 삭제가 자유롭다. - 생성 시 크기를 지정하지 않는다. - 리스트를 다른 말로 Dynamic Array라고 부른다. ArrayList의 특징 - 데이터의 크기가 정해져 있지 않고, 동적으로 삽입과 삭제가 가능 - 데이터 타입에 관계 없이 삽입이 가능(object 타입) - 배열보다 속도가 느리다 - ArrayList.Insert(int index, object value); list.Insert(3,4); - ArrayList.R..
배열이란? - 동일한 데이터 타입의 변수를 묶어서 저장하기 위한 자료구조 - 많은 데이터를 관리하기 위해 사용하는 것 - 비슷한 성질의 데이터를 그룹화하여 관리 - 정수형 데이터 초기화 값은 0 string[] books = new string[100]; int[] score = new int[9]; score[0] = 0; score[1] = 1; score[2] = 4; score[3] = 0; score[4] = 1; 배열의 장점 - 구조가 간단하다 - Index 접근이 가능하다 로또 프로그램 제작 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Task..
자료구조(Data Structure)란 - 안정적이고 효율이 높은 프로그램을 개발 - 프로그램 = 자료구조 + 알고리즘 - 선형 자료구조 / 알고리즘 / 비선형 자료구조