1. 스택 

    - 후입선출(Last-In-First-Out(LIFO)) 원리의 자료구조이다.

    - 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형구조로 되어있다. 


2. stack 함수

   - int stackpop(int *) : 스택에서 top이 가리키는 요소를 꺼내는 함수

   - void stackpush(int *,int) : 스택에 요소를 삽입하는 함수

   - int stackempty(int) : 스택이 비어있는지 검사 하는 함수


3. 소스 
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. typedef struct node
  5. {
  6.     int data;
  7.     node *pre;
  8. }node;
  9.  
  10. node * top = NULL;
  11.  
  12. int stackisempty(node*);
  13. int stackpop();
  14. void stackpush(int);
  15.  
  16. int main(void)
  17. {
  18.     stackpush(123);
  19.     stackpush(222);
  20.     stackpush(333);
  21.     stackpop();
  22.     stackpop();
  23.     stackpop();
  24.     stackpop();
  25.  
  26.     return 0;
  27. }
  28.  
  29. void stackpush(int data)
  30. {
  31.     node *item = (node *)malloc(sizeof(node));
  32.    
  33.     if(stackisempty == NULL) // 스택이 비어있고 첫 요소를 삽입
  34.     {
  35.         item->pre = NULL;
  36.         item->data = data;
  37.         top = item;
  38.     }
  39.     else  //스택의 처음 요소 이후의 데이터를 삽입
  40.     {
  41.         item->data = data;
  42.         item->pre = top;
  43.         top = item;
  44.     }
  45.     printf("push : %d\n",top->data);
  46. }
  47.  
  48. int stackpop()
  49. {
  50.     node *freenode = NULL;
  51.     int data = 0;
  52.  
  53.     if(stackisempty(top)) //스택이 비어있으면 리턴
  54.         return 0;  
  55.     else    // 스택에 요소가 있을 때
  56.     {          
  57.         data = top->data;
  58.         printf("pop : %d\n",data)
  59.  
  60.         if(stackisempty(top) == 0)
  61.         {
  62.             freenode = top;  // malloc 반환 하기 위한 freenode
  63.             top = top->pre;  // 탑의 위치를 내린다
  64.             free(freenode);  // malloc 메모리를 반환
  65.         }
  66.  
  67.         return data;
  68.     }
  69. }
  70.  
  71. int stackisempty(node *top)
  72. {
  73.     if(top == NULL)
  74.     {
  75.         printf("Stack empty\n");
  76.         return 1;
  77.     }
  78.     else
  79.         return 0;
  80. }
4. 결과
   


+ Recent posts