Page 137 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 137

max  8               Pop(&s, &x);  max   8
                        ptr  4                             ptr   3
                        stk                                stk
                                 0  19                               0  19
                                 1  22                               1  22
                                 2  37                               2  37
                                 3  53                               ❸  53
                                 ❹                                   4
                                 5              53을 팝                5
                                 6                                   6
                                 7                                   7

                                           [그림 4-5] 스택에서 팝


                        피크 함수 Peek
                        Peek 함수는 스택 꼭대기의 데이터를 ‘몰래 엿보는’ 함수입니다. 피크에 성공하면 0을 반환
                        하고 스택이 비어 있으면 –1을 반환합니다. 스택이 비어 있지 않으면 꼭대기 요소 stk[ptr – 1]
                        의 값을 포인터 x가 가리키는 변수에 저장합니다. 또 데이터의 입력과 출력이 없으므로 스택

                        포인터는 변화하지 않습니다.


                        스택의 모든 요소를 삭제하는 함수 Clear

                        Clear 함수는 스택에 쌓여 있는 모든 데이터를 삭제하는 함수입니다.
                           스택에 대한 푸시와 팝 등 모든 작업은 스택 포인터를 바탕으로 이루어집니다. 따라서 스택의 배열 요솟값을 변경할 필요
                        가 없습니다. 모든 요소의 삭제는 스택 포인터 ptr 값을 0으로 하면 끝납니다.


                         실습 4-2[C]                                               •완성 파일 chap04/IntStack.c

                         01  /*--- 스택 용량 ---*/
                         02  int Capacity(const IntStack *s)
                         03  {
                         04     return s->max;
                         05  }
                         06
                         07  /*--- 스택에 쌓여 있는 데이터 수 ---*/
                         08  int Size(const IntStack *s)
                         09  {
                         10     return s->ptr;
                         11  }
                         12
                         13  /*--- 스택이 비어 있는가? ---*/
                         14  int IsEmpty(const IntStack *s)
                         15  {
                         16     return s->ptr <= 0;




                                                                                        04•스택과 큐  137
   132   133   134   135   136   137   138   139   140   141   142