Stack ๊ตฌ์กฐ
- ํ์ ์ ์ถ(LIFO; Last In First Out)์ ๊ตฌ์กฐ
- ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์ญ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํจ
- ‘์ง์ ์์์ฌ๋ฆฐ ํํ’๋ผ๋ ์๋ฏธ์ ๊ตฌ์กฐ
- ๋ฐ์ดํฐ์ ์ ์ฅ์ push (๋ฐ์ด ๋ฃ๊ธฐ)๋ผ๊ณ ํ๋ฉฐ, ๋ฐ์ดํฐ์ ์ฒ๋ฆฌ๋ pop (๊บผ๋ด๊ธฐ)์ด๋ผ๊ณ ํ๋ค.
์)
์ธํฐ๋ท ํ์์ ‘๋ค๋ก๊ฐ๊ธฐ’ ๊ธฐ๋ฅ
‘์คํ์ทจ์’ ๊ธฐ๋ฅ
ํ ์คํธ ์ ๋ ฅ ์ปค์
STACK ๋ฉ๋ชจ๋ฆฌ ์์ญ (๋ณ์์ ์ ์ธ, ํจ์์ return)
CPU์ ์ฐ์ฐ
๊ธธ ์ฐพ๊ธฐ
ใ กใ กใ กใ กใ ก
#include <stdio.h>
#include <Windows.h>
#include <string.h>
#define MAX 8
#define TRUE 1
#define FALSE 0
void stack_test01();
void stack_test02();
int push(int data);
int pop();
int arr[MAX] = { 0, }; // ์์๋ค์ ์ ์ฅํ ๋ฐฐ์ด
int top = -1; // ๊ฐ์ฅ ๋ง์ง๋ง ์์์ ์ธ๋ฑ์ค (์ด๊ธฐ๊ฐ -1)
void main() {
stack_test02();
}
int push(int data) {
if (top == MAX - 1) { // top == 7
printf("๋์ด์ ์ ์ฅํ ๊ณต๊ฐ ์์!\n");
return FALSE;
}
arr[++top] = data;
// ++top;
// arr[top] = data;
return TRUE;
}
int pop() {
if (top < 0) {
printf("๊บผ๋ผ ๋ฐ์ดํฐ ์์!\n");
return FALSE;
}
arr[top--] = 0;
// arr[top] = 0
// top--;
return TRUE;
}
void print() { // arr์ซ์์ด ์ถ๋ ฅํจ์.
int i;
for (i = 0; i < MAX; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
}
void stack_test01() {
push(4);
push(5);
push(1);
push(2);
print(); // 4 5 1 2 0 0 0 0
pop();
print(); // 4 5 1 0 0 0 0 0
pop();
print(); // 4 5 0 0 0 0 0 0
pop();
print(); // 4 0 0 0 0 0 0 0
pop();
print(); // 0 0 0 0 0 0 0 0
pop();
print();
}
void stack_test02() {
int select = 0;
int data;
while (1) { // ๋ฌดํ๋ฃจํ ์์ฑ.
printf("๋ฐฐ์ด : ");
print();
printf("1. push\n");
printf("2. pop\n");
printf("3. exit \n์
๋ ฅ : ");
scanf_s("%d", &select); // ์
๋ ฅํ ์๋ฅผ select์ ์ ์ฅ.
switch (select) { // select ์ ์ ์ฅํ ๊ฐ์ ๋ฐ๋ผ .
case 1: // push ๋ฅผ ํธ์ถํ ๊ฒฝ์ฐ.
printf("์ถ๊ฐํ ์์ : ");
scanf_s("%d", &data); //์
๋ ฅํ ์์๋ฅผ data์ ์ ์ฅ.
if (push(data)) // push(data) ์์ True(1) ํน์ False(0) ๋ฅผ returnํด์ค.
printf("์ถ๊ฐ ์๋ฃ!\n");
break;
case 2: // pop์ ํธ์ถํ ๊ฒฝ์ฐ
if (pop(data)) // pop(data) ์์ True(1) ํน์ False(0) ์ returnํด์ค.
printf("์ญ์ ์๋ฃ!\n");
break;
case 3: // exit ์ ํธ์ถํ ๊ฒฝ์ฐ.
printf("ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํฉ๋๋ค.\n");
exit(0);
}
getch();
system("cls");
}
}
ใ กใ กใ กใ กใ ก
':: C_ ๐ฉ > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] by C์ธ์ด #12 [์ฐ๊ฒฐ๋ฆฌ์คํธ] (0) | 2021.04.09 |
---|---|
[์๋ฃ๊ตฌ์กฐ] by C์ธ์ด -#08 [Quick sort] (0) | 2021.03.29 |
[์๋ฃ๊ตฌ์กฐ] by C์ธ์ด #07 [insertion sort] (0) | 2021.03.28 |
[์๋ฃ๊ตฌ์กฐ] by C์ธ์ด -05- [Merge Sort, Quick Sort] (0) | 2021.03.27 |
[์๋ฃ๊ตฌ์กฐ] #03 by C์ธ์ด [์ฌ๊ทํธ์ถ ์๊ณ ๋ฆฌ์ฆ] (0) | 2021.03.26 |
๋๊ธ