in C

[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에 있는 데이터를 출력(제거)한다.

[sourcecode language=”C”]
//
// 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();
}
[/sourcecode]

Write a Comment

Comment