개발일기

자료구조란 무엇일까?(스택, 큐) 본문

cs

자료구조란 무엇일까?(스택, 큐)

황대성 2024. 6. 19. 23:23

자료구조

컴퓨터는 한정적인 공간이다. 이 한정적인 메모리 안에서 데이터를 효율적으로 관리하는게 중요한 문제이다. 데이터를 어떻게 저장하고 메모리 공간을 효율적으로 관리하는지에 대한 고민에서 나온것이 자료구조 이다. 

 

스택

한국어로 하면 쌓아 올리다 이런 말 이다. 쉽게 생각하면 어떤 통 안에 물건을 차곡차곡 넣는다고(push) 생각해 보자. 그렇다면 통안에 모든 물건을 꺼낼 때는 어떻게 꺼내야 하는가? 제일 마지막에 넣었던 것부터 역순으로 꺼내야 한다. 그래야지 제일 처음에 넣었던 것을 꺼낼 수 있다.(pop) 스택을 그림으로 나타내면 아래와 같다.

 

실제 예제 : 함수 호출

그렇다면 스택은 어디에 쓰이는 걸까? 우리가 프로그래밍을 할 때 함수 호출을 할 때 정말 많이 쓰인다. 우리가 함수가 실제로 불려서 실행되는 프로세스를 콜스택 이라고 한다. 아래 예제를 확인해 보자.

//main()

function foo(b) {
  let a = 5;
  return a + b +10
}

function bar(x) {
  var y = 3;
  return foo(x * y)
}

console.log(bar(6))

1. main 함수 실행

2. console.log 안에 있는 bar() 함수 호출

3. bar() 함수 실행. 안에 있는 foo() 함수 호출

4. foo() 함수 실행 및 값 리턴

5. 쌓인 순서 역으로 꺼내짐(pop)

 

큐는 줄 서있는 사람을 생각하면 된다. 첫번째로 도착한 사람이 첫번째로 나간다. 아래의 그림을 참고 하자. inQueue는 삽입, DeQueue는 삭제라고 생각 하면 된다. Front는 곧 나갈 데이터, Rear는 방금 들어온 데이터 라고 한다. 따라서 front와 Rear가 같아지면 큐는 공백(empty) 상태임을 나타낸다.

 

 

 

'cs' 카테고리의 다른 글

파라미터(Parameter)와 아규먼트(Argument)의 차이  (0) 2024.06.20
데이터베이스 유형  (0) 2023.08.29
컴퓨터와 데이터베이스  (0) 2023.08.28
캐시와 메모리 할당  (0) 2023.08.21
제어장치(CU)의 핵심 기능 스케줄링  (0) 2023.08.18