그라운드 임베디드 EN 유튜브 구독

노트 / 자료구조와 알고리즘

큐와 스택: 먼저 온 것과 나중에 온 것

작업 대기열은 큐, 함수 호출은 스택입니다. 두 구조를 배열로 직접 구현하며 차이를 봅니다.

GROUND EMBEDDED · 정리 노트자료구조 03큐와 스택 1static int16_t st[16]; 2static uint8_t top; 3void push(int16_t v) { if (top < 16) st… 4int16_t pop(void) { return top ? st[…

큐: 먼저 들어온 것이 먼저 나간다 (FIFO)

넣기 (뒤)CBA꺼내기 (앞)A가 먼저
큐. 뒤로 넣고 앞에서 꺼냅니다.

버튼 이벤트, 전송 대기 패킷, 명령 목록처럼 순서가 중요한 데이터는 큐에 쌓습니다. 링 버퍼가 바로 고정 크기 큐입니다. RTOS의 메시지 큐도 같은 원리에 잠금과 대기 기능을 더한 것입니다.

스택: 나중에 들어온 것이 먼저 나간다 (LIFO)

A맨 아래BC맨 위꺼내기C가 먼저
스택. 넣은 곳에서 다시 꺼냅니다.
static int16_t st[16];
static uint8_t top;
void push(int16_t v) { if (top < 16) st[top++] = v; }
int16_t pop(void)    { return top ? st[--top] : 0; }

CPU도 함수를 호출할 때 돌아갈 주소와 지역 변수를 스택에 쌓습니다. 가장 나중에 부른 함수가 가장 먼저 끝나기 때문입니다. 메뉴 화면에서 "뒤로 가기"를 구현할 때도 스택이 자연스럽습니다.

언제 무엇을

상황 구조
들어온 순서대로 처리 큐
되돌아가기, 중첩 구조 스택
가장 급한 것부터 우선순위 큐

임베디드에서는 둘 다 크기를 고정한 배열로 만들고, 넘칠 때 어떻게 할지(버림, 덮어쓰기, 에러 표시)를 처음부터 정해 둡니다.

영상으로 이어 보기공부법과 진로 시리즈 15편2025 임베디드 프로그래밍 공부 순서 | 공부 방법 | 로드맵PROJECT COURSE배운 자료구조를 실제 펌웨어에 넣어 보고 싶다면밸런싱 로봇 하나를 요구사항, 회로와 PCB, 펌웨어, 앱까지 실무 순서대로 만드는 강의입니다. 10파트 165강.강의 살펴보기 →FREE PDF무료 전자책 3권 받기이 주제를 한 권으로 이어서 읽고 싶다면. BLDC 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →