자료구조
여러 데이터들의 묶음을 저장하고, 사용하는 방법을 정의 한 것
data - 문자, 숫자, 소리, 그림, 영상등 실생활을 굿어하고 있는 모든 값
- 데이터는 분석하고 정리하여 활용 해야만 의미를 가질 수 있다.
- 사용하려는 목적에 따라 형태를 구분하고 분류하여 사용
- 필요에 따라 데이터의 특징을 잘 분석하고, 파악 하여 정리하고 활용
=> 데이터는 체계적으로 저장해두는게 데이터를 활용하는데 있어 훨씬 유리하다.
Stack
데이터를 순서대로 쌓는 자료구조
- 가장 먼저들어간 것은 가장 나중에, 가장 나중에 들어간 것은 가낭 먼저
- 하나의 방향으로 이루어지는 제한적 접근이 있다.
LIFO(Last In First Out) or FILO(Firt In Last Out)
Stack의 순서 (홈페이지 이동)
- 새로운 페이지에 접속할때, 현재 페이지를 Prev Stack에 보관한다.
- 뒤로가기 버튼을 눌러 이전 페이지로 돌아 갈 때에는, 현재 페이지를 Next Stack에 보관하고,
Prev Stack에 가장 나중에 보관된 페이지를 현재 페이지로 가져온다.
- 앞으로 가기 버튼을 눌러 앞서 방문한 페이지로 이동을 원할 때는, Next Stack의 가장 마지막으로 보관된 페이지를 가져온다.
- 마지막으로 현재 페이지를 Prev Stack에 보관한다.
Queue
- Stack과 반대 개념
먼저들어간 데이터가 먼저 나오는 개념
- FiFO(First in First Out) or LILO(Last In Last Out)
- 데이터가 입력되는 순서대로 처리할 때 주로 사용
Queue의 순서
- 출력
출력버튼 -> 문서 -> 인쇄작업(임시기억 장치) Queue에 들어온다. -> Queue에 들어온 순서대로 출력 된다.
- 데이터를 주고 받을 때 각 장치사이에 존재하는 속도의 차이, 시간의 차이를 극복하기 위해 임시 기억 장치의 자료 구조로 Queue를 사용한다.
- 속도의 차, 시간의 차를 버퍼(Buffer)라고 하며, 버퍼링(Buffering)의 개념을 보여주고 있다.
Queue
대부분의 컴퓨터 장치에서 발생하는 이벤트는 파동 그래프와 같이 불규칙적으로 발생
이에 비해 CPU와 같이 발생한 이벤트를 처리하는 장치는 일정한 처리 속도를 갖는다.
- 불규칙적으로 발생한 이벤트를 규칙적으로 처리하기 위해 버퍼(buffer)를 사용한다
ex) 컴퓨터와 프린트 사이의 데이터 통신 정리
1. 일반적으로 프린터는 속도가 느리다.
2. CPU는 프린터와 비교하면, 데이터 처리 속도가 빠르다
3. CPU의 빠른 속도로 인쇄에 필요한 데이터(Data)를 만든 다음, 인쇄작업을 Queue에 저장하고 다른 작업을 수행 한다.
4. 프린터는 인쇄작업 Queue에서 데이터를 받아 일정한 속도로 인쇄 한다.
Class 키워드로 사용자 정의 데이터 타입을 만들고, Stack과 Queue의 데이터 타입을 정의한다.
이렇게 생성한 사용자 정의 데이터 타입은 Stack과 Queue를 Array와 Object 처럼 사용할 수 있다.
- 사용자 정의 타입으로 Stack과 Queue를 정이 하면, new 키워드를 통해 새로운 객체 (인스턴스)를 만들 수 있다.
- 생성한 인스턴스를 통해 다양한 메서드를 활용 할 수 있다.
Class 키워드를 이용한 Stack, Queue 사용자 정의
Github TIL