앞에서는 스택의 크기를 고정시켜놓고 컴파일을 하는 1차원 배열 스택을 구현했다. 이번에는 필요에따라 메모리 공간을 할당하는 동적메모리를 활용한 스택을 구현해보자. #include #include typedef int element; typedef struct { int top; int capacity; element *data; } StackType; 일반적인 스택구현과 다른점은 element *data이다. 동적메모리를 할당할 malloc함수는 리턴값이 포인터이기 때문에, 그 포인터를 받을 포인터변수 data를 선언한다. 1.스택초기화, 동적메모리 free void init_stack(StackType *s) { s->top = -1; s->capacity = 1; s->data = (element *..
스택 일단 stack의 구조는 이렇다. 데이터를 넣을땐 위에서 넣고, 데이터를 빼낼때 또한 위에서 뺀다. 아래에서 데이터를 넣고, 뺄 수 없다. 항상 위에서만! 후입선출(last in, first out)을 구조를 가진다. 스택의 예시 1)함수의 호출 2)웹 브라우저에서 뒤로가기 등등.. 예를들어, 재귀함수를 호출한다고 가정해보자. 함수는 실행이 끝나면 자신을 호출한 함수로 되돌아가야한다. 만약 factorial(3)이라는 함수를 호출한다면 factorial(2)가 실행되고, factorial(2)함수가 끝나면 factorial(3)함수로 돌아간다는 뜻이다. 스택은 복귀할 주소를 기억하는데 사용된다. 스택에서 입출력이 이루어 지는 가장 윗부분을 stack top이라고 한다. 가장 밑 스택은 bottom ..