[Programing] C 스택을 표현한 간단한 소스.

출처 : http://www.embeddedworld.co.kr/article/view_serial.asp?se=65&article_idx=10094
정재준님께서 연재하신 C 알고리즘 스택 부분 소스 코드입니다.
pop()함수에서 인덱싱 감소가 빠져있어서 그부분만 수정되었습니다.
요약
스택은 마지막으로 입력된 데이터가 첫 번째로 출력되는 LIFO(Last In First Out)형의 자료구조이다. 스택에 입력되는 데이터는 여러 가지 형태가 있을 수 있다. 스택의 동작은 보통 3가지(push, pop, stack top)로 구분된다.
● push 동작은 스택의 top에 새로운 데이터를 입력(추가)한다.
● pop 동작은 스택의 top에 있는 데이터를 출력(제거)한다.

//
//  Source: 배열을사용하여스택구현
//  Compiler: Standard C
//
#include <stdio.h>
#define STACKSIZE 100
typedef struct {
 int size;
 int items[STACKSIZE];
} STACK;
void push (STACK *ps, int x)
{
    if (ps->size == STACKSIZE) {
      printf("Error: stack overflow\n");
      return;
    } else
      ps->items[ps->size++] = x;
}
int pop (STACK *ps)
{
 if (ps->size == 0){
 printf("Error: stack underflow\n");
  return -1;
 } else
  return ps->items[--ps->size];
}
int main ()
{
 STACK *ps;
 ps = (STACK*)malloc (sizeof(STACK));
 ps->size = 0;
 printf ("size of stack = %d\n", sizeof(STACK));
 push (ps, 10);
 push (ps, 20);
 push (ps, 30);
 push (ps, 40);
 printf ("%d\n", pop (ps));
 printf ("%d\n", pop (ps));
 printf ("%d\n", pop (ps));
 printf ("%d\n", pop (ps));
 free (ps);
 printf("Press Any Key...");
 getchar();
}

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다