반응형
- ArrayBaseStack.h -
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #ifndef __AB_STACK_H__ #define __AB_STACK_H__ #define TRUE 1 #define FALSE 0 #define STACK_LEN 100 typedef int Data; typedef struct _arrayStack { Data stackArr[STACK_LEN]; // 길이가 100인 스택 형성 int topIndex; } ArrayStack; typedef ArrayStack Stack; void StackInit(Stack *pstack); // 스택 초기화 int SIsEmpty(Stack *pstack); // 스택 비어있는지 확인 void SPush(Stack *pstack, Data data); // 스택에 값 넣기 Data SPop(Stack *pstack); // 스택 값 빼내기 Data SPeek(Stack *pstack); // 스택 값 보기 #endif | Crocus |
- ArrayBaseStack.c -
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #include <stdio.h> #include <stdlib.h> #include "ArrayBaseStack.h" void StackInit(Stack *pstack) { pstack->topIndex = -1; // 배열 스택에서는 배열 번호가 0부터 시작이니 -1을 아무것도 없는상태로 정의 } int SIsEmpty(Stack *pstack) { if (pstack->topIndex == -1) // 배열 번호가 -1이면 비어있는상태 return TRUE; else return FALSE; } void SPush(Stack *pstack, Data data) { pstack->topIndex += 1; // 스택을 추가하니 배열 번호를 +1해준다 pstack->stackArr[pstack->topIndex] = data; // 그 +1된 배열번호를 가진 배열에 data를 대입 } Data SPop(Stack *pstack) { int rIdx; if (SIsEmpty(pstack)) // 스택이 비었을땐 빼낼 수 없다. { printf("Stack Memory Error!"); exit(-1); } rIdx = pstack->topIndex; // 현재 배열 번호를 rIdx에 저장 pstack->topIndex -= 1; // 배열 번호는 -1 해준다 return pstack->stackArr[rIdx]; // rIdx에 저장된 배열번호를 가진 배열을 반환 } Data SPeek(Stack *pstack) { if (SIsEmpty(pstack)) { printf("Stack Memory Error!"); exit(-1); } return pstack->stackArr[pstack->topIndex]; // 가장 위에 있는 스택을 나타내준다. } | Crocus |
- ArrayBaseStackMain.c -
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <stdio.h> #include "ArrayBaseStack.h" int main(void) { //Stack의 생성 및 초기화 Stack stack; StackInit(&stack); //데이터 넣기 SPush(&stack, 1); SPush(&stack, 2); SPush(&stack, 3); SPush(&stack, 4); SPush(&stack, 5); //데이터 꺼내기 while (!SIsEmpty(&stack)) printf("%d", SPop(&stack)); return 0; } | Crocus |
반응형
'Applied > 자료구조' 카테고리의 다른 글
연결 리스트 기반 스택(List Base Stack) 소스코드 (0) | 2016.02.24 |
---|---|
배열 기반 스택(Array Base Stack) 개념 (0) | 2016.02.24 |
원형 큐(Circular Queue) 개념 (0) | 2016.02.22 |
원형 큐(Cricular Queue) 소스 코드 (0) | 2016.02.22 |
연결 리스트 기반 큐(List Base Queue) 개념 (0) | 2016.02.22 |