๋ถ์คํธ์ฝ์ค CS50 ์ฝ์นญ์คํฐ๋ ๋ง์ง๋ง 6์ฃผ์ฐจ ์ฃผ์ '์๋ฃ๊ตฌ์กฐ' ๐
๋ค๋ฆ์ 6์ฃผ์ฐจ ํ๊ณ ๋ก์ด์ง๋ง
6์ฃผ์ฐจ ์ ๋ง ์์๊ฐ์ ์ง๋๊ฐ ๊ฑฐ ๊ฐ์๋ค...!
realloc() : ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ก ํ ๋น
ex. realloc(list, 4 * sizeof (int));
list
: ์ด๋ฏธ ํ ๋น๋ฐ์ ๊ธฐ์กด ๋ฉ๋ชจ๋ฆฌ ๋ฉ์ด๋ฆฌ๋ฅผ ์๋กญ๊ฒ ๊ฐ์ ธ์์
4 * sizeof(int)
: ์๋ก์ด ํฌ๊ธฐ๋ก ์ฌํ ๋น
์ฐ๊ฒฐ ๋ฆฌ์คํธ(linked list) : ๋ฉ๋ชจ๋ฆฌ ๋ฉ์ด๋ฆฌ ์ฌ๋ฌ ๊ฐ๋ฅผ ํฌํจํ ๋ฐ์ดํฐ ๊ตฌ์กฐ
ํด์ ํ ์ด๋ธ : ๋ฐฐ์ด + ์ฐ๊ฒฐ ๋ฆฌ์คํธ
ํ(Queue) : ์ ์ ์ ์ถ(FIFO) - enqueue, dequeue
์คํ(Stack) : ํ์ ์ ์ถ(LIFO) - push, pop
๋์ ๋๋ฆฌ(Dictionary) : ํค-๊ฐ, ๋จ์ด-๊ฐ, ๋จ์ด-ํ์ด์ง ๋ฒํธ ๋ฑ ์์ผ๋ก ์ด๋ฃจ์ด์ง ์๋ฃ๊ตฌ์กฐ
#include <stdio.h>
#include <stdlib.h>
typedef struct stack{
int top;
int capacity;
int* array;
} Stack;
Stack* createStack(int capacity) {
Stack* stack = (Stack*)malloc(sizeof(Stack));
stack->capacity = capacity;
stack->top = -1;
stack->array = (int *)malloc(stack->capacity*sizeof(int));
return stack;
}
// [์คํ์ด ํฌํ ์ํ์ธ์ง ๊ฒ์ฌ]
int isFull(Stack* stack) {
return stack->top == stack->capacity-1;
}
// [์คํ์ด ๊ณต๋ฐฑ ์ํ์ธ์ง ๊ฒ์ฌ]
int isEmpty(Stack* stack) {
return stack->top == -1;
}
// [์คํ์ด full์ด ์๋ ๋ data๋ฅผ ์คํ์ ์ฝ์
]
void push(Stack* stack, int item) {
if (isFull(stack))
return;
stack->array[++stack->top] = item;
printf("%d pushed to stack\n", item);
}
// [์คํ์ด empty๊ฐ ์๋ ๋ top์ data๋ฅผ ๋ฐํ ํ ์ ๊ฑฐ]
int pop(Stack* stack) {
if(isEmpty(stack)) {
return 1;
}
return stack->array[stack->top--];
}
// [์คํ์ด empty๊ฐ ์๋ ๋ top์ data๋ฅผ ๋ฐํ]
int peek(Stack* stack) {
if(isEmpty(stack)) {
return 1;
}
return stack->array[stack->top];
}
int main() {
Stack* stack = createStack(100);
push(stack, 10);
push(stack, 20);
push(stack, 30);
push(stack, 40);
printf("%d pop from stack\n", pop(stack));
printf("%d pop from stack\n", pop(stack));
push(stack, 50);
printf("%d pop from stack\n", pop(stack));
printf("%d pop from stack\n", pop(stack));
printf("%d pop from stack\n", pop(stack));
printf("%d pop from stack\n", pop(stack));
return 0;
}
๋ง์ง๋ง ๋ถ์คํธ์ฝ์ค ๋ผ์ด๋ธ ๊ฐ์,,,,
๋ค๋ฅธ ๋ถ๋ค ์ง๋ฌธ ๋ณด๋ฉด์ ๋ค๋ค ๋น์ทํ๊ตฌ๋ ์ถ๊ธฐ๋ ํ๊ณ
๋ ์ด์ฌํ ํด์ผ ๊ฒ ๋ค๋ ์๊ทน๋ ๋ฐ๊ณ ์ด๋์ ๋ ๋๊ธฐ๋ถ์ฌ๊ฐ ๋์๋ค
์ฝ์นญ์คํฐ๋์ ํ์ง์๋ถ๋ค์ด ๋ผ์ด๋ธํด์ฃผ์ค ๋
๋งค๋ฒ ๊ฒธ์ํ ์์ธ์ ๊ฒฉ๋ ค์ ํ๋๋ก ์ํด์ฃผ์
์ ์ฐธ ๊ฐ์ฌํ๋ค๐๐ป
์งํ ์ค์ธ ์คํฐ๋๋ก ์ ์ ์ด ์์ด ์ด์ ์ผ 6์ฃผ์ฐจ ํ๊ธฐ๋ฅผ ์ฌ๋ฆฐ๋ค๐คฆโโ๏ธ
๊ฐ์ ์ด์ฌํ ๋ค์์๋๋ฐ ๋ฒ์จ ๊ฐ๋ฌผ๊ฐ๋ฌผ...๐ฆ
๋ถ์คํธ์ฝ์ค๋ฅผ ํตํด C์ธ์ด๋ฅผ ์ ํ๊ธธ ์ฐธ ๋คํ์ด๋ผ๋ ์๊ฐ์ด ๋ค์๋ค
์๋ฐ์คํฌ๋ฆฝํธ๋ง ๋ณด๋ค๊ฐ C์ธ์ด ๋ณด๋๊น ๋๋ฌด ์ด๋ ค์ ๋๋ฐ
๋ถ์คํธ์ฝ์ค ๊ฐ์ ๋๋ถ์ ๊ทธ๋๋ง ์ข ์ฝ๊ฒ(?) ๋ฐ์๋ค์ผ ์ ์์๋ ๊ฒ ๊ฐ๋ค..!
๊ฐ ๊ธธ์ด ๋ฉ์ง๋ง ์ด๋ ๊ฒ ํ๋์ฉ ์ฐจ๊ทผ์ฐจ๊ทผ ํ๋ค๋ณด๋ฉด
๋๋ ์ด๋๋ ๊ฐ๋ฐ์๊ฐ ๋์ด ์๊ฒ ์ง!!!!๐ฅ
๊ทธ๋์ ๋ชจ๋ ์๊ณ ํ์ จ์ต๋๋ค :D
๋ถ์คํธ์ฝ์ค CS50 ์ข์๊ฑฐ ์์ ๊ฐ๋๋ค. ์ ๋ C์ธ์ด ํ๋ฒ ๋ณผ๊น ์๊ฐ์ค
์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ค ๊ตฌํํ๋ ๊ฑด๊ฐ์???? ์๋ฃํ๊ธฐ ๋นก์๊ฒ ๋ค์;;;;