CS/자료구조

    [자료구조] 링크드리스트(Linkde List)

    [자료구조] 링크드리스트(Linkde List)

    링크드리스트 (Linked List) 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조. 구조 노드(Node) : 데이터 저장 단위(데이터, 포인터로 구성) 포인터(Pointer) : 각 노드 안에서, 다음이나 이전 노드와의 연결 정보를 가지고 있는 공간 장점 늘어선 노드의 중간지점에서도 자료의 추가와 삭제가 O(1)의 시간에 가능하다. 단점 배열이나 트리구조와는 달리 특정 위치의 데이터를 검색할땐 O(n)의 시간이 걸린다. 종류 단일 연결 리스트 각 노드에 자료공간과 한 개의 포인터 공간이 있고, 각 노드의 포인터는 다음 노드를 가리킨다. 이중 연결 리스트 단일 연결 리스트와 비슷하지만, 포인터 공간이 두 개가 있고 각각의 포인터는 앞의 노드와 뒤의 노드를..

    [자료구조] 큐(Queue)

    [자료구조] 큐(Queue)

    큐(Queue) 가장 먼저 집어 넣은 데이터를 가장 먼저나오는 FIFO 구조 FIFO(First In Fist Out, 선입선출) 나중에 집어 넣은 데이터가 먼자 나오는 스택과 반대되는 개념 장점 데이터의 접근, 삽입, 삭제가 빠르다. 단점 중간에 위치한 데이터에 대한 접근이 불가. 활용 프로세스 관리 입력된 것을 처리하지 못하고 있는 상황 BFS 기능 enQueue() : 데이터 입력 deQueue() : 데이터 반환 isEmpty() : 큐가 비어있는지 확인 isFull() : 큐가 가득 차있는지 확인 용어 front : 데이터를 반환하는 쪽, 출구 rear : 데이터를 입력하는 쪽, 입구 선언 Queue queue = new LinkedList(); // T형 queue 선언, linkedlist ..

    [자료구조] 스택(Stack)

    [자료구조] 스택(Stack)

    스택 제한적으로 접근할 수 있는 나열구조로 접근방법은 언제나 목록의 끝에서만 일어난다. 한 쪽 끝에서만 자료를 넣어나 뺄 수 있는 선형구조(LIFO)로 되어있다. LIFO(Last In First Out, 후입선출) : 마지막에 넣은 데이터를 가장 먼저 추출하는 데이터 관리 정책 활용 컴퓨터 내부 프로세스 구조의 함수 동작 방식 재귀 알고리즘 DFS 알고리즘 방문기록 실행취소 기능 push() : 스택에 데이터 입력 pop() : 스택의 마지막 데이터를 반환 장점 구조 단순, 구현이 쉽다 데이터의 저장/읽기 속도가 빠르다. 단점 데이터 최대 갯수를 미리 정해야한다. 저장 공간의 낭비가 발생할 수 있음. 선언 import java.util.Stack; Stack stack = new Stack(); 메소드..

    [자료구조] 3차원 배열 (Array)의 출력

    3차원 배열 전체 코드 public class ThreeDimensionArray { public static void main(String[] args) { int[][][] intArr = { { // [0][][] {1, 3}, // [0][0][] {5, 6, 7, 8}, // [0][1][] {9, 10, 11, 12} // [0][2][] }, { // [1][][] {13, 14, 15, 16}, // [1][0][] {17, 18, 19 }, // [1][1][] {21, 22, 23, 24} // [1][2][] } }; System.out.println(intArr[0][0][1]); // 2 System.out.println(intArr[0][1][2]); // 8 System.out..

    [자료구조] 배열 (Array), ArrayList, LinkedList

    배열 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 필요한 이유? 같은 종류의 데이터를 순차적, 효율적으로 관리한다. 특징 같은 타입만 저장이 가능하다 인덱스는 0부터 시작한다 인덱스 번호로 접근하여 빠른 접근이 가능하다. 최대 길이를 미리 선언해야하며, 수정 및 삭제가 어렵다. 장점 구조가 간단하여 사용하기 쉬움 데이터를 읽어오는 접근 시간이 빠름 단점 크기 변경 불가 비순차적 데이터의 추가 또는 삭제의 시간이 오래걸림. JAVA의 배열 배열 선언의 여러가지 방법 타입[] 변수이름; // 배열을 선언(배열을 다루기 위한 참조변수 선언) 변수이름 = new 타입[길이]; // 배열을 생성(실제 저장공간을 생성) // 선언과 동시에 데이터 삽입 int[] score = new int[]{ 50, 60..