반응형
스택은 선형 자료구조로써 FILO(First Input Last Output) 으로 처음 입력된 값이 가장 마지막에 출력되는 자료 구조이다.
1개의 데이터가 다른 데이터와 서로 하나씩 연결된 1:1 구조로써 선형 구조이다.
스택에 데이터를 입력하는 것을 Push 데이터를 꺼내는 것을 Pop이라고 한다.
Top은 현재 가장 높은 위치의 데이터의 인덱스라고 생각하면 된다.
Top값을 스택에서 데이터를 Push, 또는 Pop할때 마다 변화시키므로,
현재 데이터가 들어갈 수 있는지 존재하는지 등의 여부를 확인가능하다.
아래 소스는 배열로 된 스택이다.
#include<stdio.h> #include<stdlib.h> void Push(int data); int Pop(void); int Full(void); int Empty(void); void Print_stack(void); static int top=-1; struct stack { int size; int* data; }arr_stack; int main() { printf("Stack의 사이즈를 입력 : "); scanf("%d", &arr_stack.size); arr_stack.data = (int*)malloc(sizeof(arr_stack.data)*arr_stack.size); Push(10); Push(60); Push(10); Print_stack(); Push(1); Print_stack(); Push(3); Print_stack(); Pop(); Print_stack(); Pop(); Print_stack(); Push(2); Print_stack(); return; } void Push(int data) { if(Full()) return; arr_stack.data[++top]=data; } int Pop(void) { int data; if(Empty()) return; data=arr_stack.data[top--]; return data; } int Full(void) { if(arr_stack.size-1<=top) return 1; return 0; } int Empty(void) { if(top<0) return 1; return 0; } void Print_stack(void) { int i; for(i=0;i<=top;i++) printf("%d\n", arr_stack.data[i]); printf("\n"); }
반응형
'ETC > Data Struct | Algorithm' 카테고리의 다른 글
이진트리 순회 (0) | 2013.05.01 |
---|---|
이진트리 (0) | 2013.04.30 |
정렬 - 삽입 정렬 (0) | 2012.09.11 |
정렬 - 퀵 정렬(Quick Sort) (0) | 2012.09.10 |
정렬 - 버블 정렬 (Bubble_Sort) (0) | 2012.09.10 |