stack 2

[CS50] 스택, 큐, 딕셔너리

오늘은 이전까지 공부했던 내용 중에 다뤘던 자료이기도 하지만 많이 쓰이는 데이터 구조 3가지를 더 자세히 알아볼 텐데요 메모리 구조인 큐, 스택부터 해시 테이블로 구현할 수 있는 딕셔너리에 대해 공부해보도록 하겠습니다. 큐(Queue) 큐는 메모리 구조에서 잠깐 언급했지만 값이 아래로 쌓이는 구조를 가지고 있습니다. 값을 뺄 때는 FIFO(First In First Out), 즉 선입선출방식으로 가장 먼저 들어온 값이 가장 먼저 나가게 됩니다. Queue의 사전적 정의를 보면 (무엇을 기다리는 사람, 자동차 등의) 줄, 혹은 줄을 서서 기다리는 것이라고 나와있습니다. 만약 은행에서 줄을 설 때 먼저 줄을 선 사람이 먼저 업무를 처리하는 것과 같다고 보시면 됩니다. 큐는 배열이나 연결리스트를 통해 구현이 ..

[CS50] 파일 쓰기

지금까지는 get_string, get_int등 사용자에게 입력받는 함수를 cs50 라이브러리를 이용해서 사용했습니다. 그렇다면 라이브러리엔 이 함수가 어떻게 구현되어있을까요? 오늘은 이전 포스팅에서 배웠던 메모리 교환, 스택의 정의를 잘 생각해보고 이 함수를 구현해보고 파일에 출력하는 방법에 대해 공부해보도록 하겠습니다. 지난 포스팅에서 machine code, globals등 메모리 구조에 대해 간단하게 정리했었는데요 이런 그림으로 설명했었습니다. 그 중 heap영역에서는 malloc에 의해 메모리가 더 할당될수록 점점 사용하는 메모리의 범위가 더 아래로 늘어납니다. 마찬가지로 stack 영역에서는 함수가 많이 호출될수록 메모리의 범위가 더 위로 늘어나겠죠 이렇게 서로 점점 늘어나다 보면 제한된 메모..

CS 기초/메모리 2021.08.25