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;
}


[결과]


'Develop' 카테고리의 다른 글

원형 큐(Circular Queue)  (0) 2014.02.10
큐(Queue)  (0) 2014.02.09
이중 연결 리스트(Double Linked List)  (0) 2014.02.08
원형 연결 리스트(Circular Linked List)  (0) 2014.02.07
가용 노드 리스트(Available Node List)  (0) 2014.02.07

+ Recent posts