Develop

스택(Stack)

Y.J Kim 2014. 2. 8. 03:59

top이라 불리는 한쪽 끝에서 삽입과 삭제가 일어나는 순서 리스트


[Push 과정]


[Pop 과정]


#define MAX_STACK_SIZE 100
#define TRUE 1
#define FALSE 0

typedef struct {
	int data;
} element;

element stack[MAX_STACK_SIZE];
int top = -1;

int IsFull() {
	if(top >= MAX_STACK_SIZE-1) {
		printf("Stack is Full!!\n");
		return TRUE;
	}

	return FALSE;
}

int IsEmpty() {
	if(top < 0) {
		printf("Stack is Empty!!\n");
		return TRUE;
	}

	return FALSE;
}

void Push(element item) {
	if(IsFull()) {
		return;
	}

	top++;
	stack[top] = item;
}

element Pop() {
	element item;
	if(IsEmpty()) {
		exit(1);
	}

	item = stack[top];
	top--;
	return item;
}

int main() {
	int i;

	for(i=0; i<10; i++) {
		element item;
		item.data = i;
		Push(item);
		printf("Push: %d\n", i);
	}

	for(i=0; i<10; i++) {
		element item = Pop();
		printf("Pop: %d\n", item.data);
	}

	return 0;
}


[결과]