티스토리 뷰
반응형
1. ArrayStack.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 28 29 30 31 32 33 | //스택 연산을 위한 함수원형 선언// #ifndef ARRAYSTACK_H #define ARRAYSTACK_H #include <stdio.h> #include <stdlib.h> typedef int ElementType; typedef struct tagNode{ ElementType Data; }Node; typedef struct tagArrayStack{ int Top; int Capacity; Node* Nodes; }ArrayStack; void AS_CreateStack(ArrayStack** Stack,int Capacity);//스택 생성 void AS_DestroyStack(ArrayStack* Stack);//스택 소멸 void AS_Push(ArrayStack* Stack,ElementType Data);//Push연산 수행 ElementType AS_Pop(ArrayStack* Stack);//Pop연산 수행 ElementType AS_Top(ArrayStack* Stack);//Top : 최상위 노드에 데이터만 반환 int AS_GetSize(ArrayStack* Stack);//크기 구하기 int AS_IsEmpty(ArrayStack* Stack);//스택이 비어있는지에 대한 유무 검사 int AS_IsFull(ArrayStack* Stack);//비타민퀴즈, 스택이 꽉 차있는지에 대한 유무 #endif | cs |
2. ArrayStack.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 | //스택 연산을 위한 함수 몸체 구현// #include "ArrayStack.h" void AS_CreateStack(ArrayStack** Stack,int Capacity){ (*Stack)=(ArrayStack*)malloc(sizeof(ArrayStack)); (*Stack)->Nodes=(Node*)malloc(sizeof(Node)*Capacity); (*Stack)->Top=0; (*Stack)->Capacity=Capacity; } void AS_DestroyStack(ArrayStack* Stack){ free(Stack->Nodes); free(Stack); } void AS_Push(ArrayStack* Stack,ElementType Data){ int Position=Stack->Top; Stack->Nodes[Position].Data=Data; Stack->Top++; } ElementType AS_Pop(ArrayStack* Stack){ int Position=--(Stack->Top); return Stack->Nodes[Position].Data; } ElementType AS_Top(ArrayStack* Stack){ int Position=Stack->Top-1; return Stack->Nodes[Position].Data; } int AS_GetSize(ArrayStack* Stack){ return Stack->Top; } int AS_IsEmpty(ArrayStack* Stack){ return (Stack->Top==0); } int AS_IsFull(ArrayStack* Stack){ return ((Stack->Top)>=(Stack->Capacity)); } | cs |
3. Test_ArrayStack.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 | //테스트// #include "ArrayStack.h" int main(){ int i=0,size; ArrayStack* Stack=NULL; scanf("%d",&size); //용량 입력받음 AS_CreateStack(&Stack,size); while(! AS_IsFull(Stack)){ scanf("%d",&i); AS_Push(Stack,i); } printf("스택이 다 찼습니더!\n"); /* AS_Push(Stack,3); AS_Push(Stack,37); AS_Push(Stack,11); AS_Push(Stack,12); */ printf("Capacity : %d, Size : %d, Top: %d\n",Stack->Capacity,AS_GetSize(Stack),AS_Top(Stack)); for(i=0;i<size;i++){ if(AS_IsEmpty(Stack)){ break; } printf("Popped : %d\n",AS_Pop(Stack)); if(! AS_IsEmpty(Stack)) printf("Current Top: %d\n",AS_Top(Stack)); else printf("Stack is Empty\n"); } AS_DestroyStack(Stack); return 0; } | cs |
실행 결과
반응형
'개인 서재..* > 알고리즘' 카테고리의 다른 글
[C언어] 링크드 큐 (0) | 2017.04.23 |
---|---|
[C언어] 스택(feat.링크드 리스트) (0) | 2017.04.20 |
[C언어] Circular Doubly Linked List (0) | 2017.04.14 |
[C언어] Doubly Linked List (0) | 2017.04.14 |
[C언어] Singly Linked List (0) | 2017.04.14 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 친구들호캉스
- 사마귀광고 제거
- 겨드랑이 초음파
- 스텐팬 갈색
- 싱크대 단수
- 스텐팬 세척
- 스파 파트 4
- 제습기 후기
- 겨드랑이 지방종
- 구글애드센스 혐오광고
- 스파투어 파트4
- 아난티앳강남
- 건강검진 겨드랑이
- 혐오광고 제거
- 스텐팬 탄 자국
- 스파관광 파트4
- 겨드랑이 멍울
- 제습기 내돈내산
- 타르코프 스파 관광
- 자취요리
- 타르코프 스파 투어
- 물이 안나와요
- 피지낭종 수술후기
- 스텐팬 갈변
- 피지낭종 제거수술
- 겨드랑이 혹
- 휘센 제습기
- 피지낭종 후기
- 구글애드센스 광고차단
- 급수에러
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함