본문 바로가기
C언어

[C언어] 스택 isfull push pop peek print 하는 함수를 작성 구현하고 스택을 테스트하는 프로그램을 작성하시오

by 이얏호이야호 2022. 12. 10.

공부하시는대에 도움이 됐으면 좋겠습니다.

답안코드 확인해주세요!

 

더보기
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 100

typedef int element;        // 스택 원소(element)의 자료형을 int로 정의 

element stack[STACK_SIZE];  // 1차원 배열 스택 선언
int top = -1;               // top 초기화

							// 스택이 공백 상태인지 확인하는 연산
int isEmpty() {
	if (top == -1) return 1;
	else return 0;
}

// 스택이 포화 상태인지 확인하는 연산
int isFull() {
	if (top == STACK_SIZE - 1) return 1;
	else return 0;
}

// 스택의 top에 원소를 삽입하는 연산
void push(element item) {
	if (isFull()) {				// 스택이 포화 상태인 경우
		printf("\n\n Stack is FULL! \n");
		return;
	}
	else stack[++top] = item;	// top을 증가시킨 후 현재 top에 원소 삽입
}

// 스택의 top에서 원소를 삭제하는 연산
element pop() {
	if (isEmpty()) {			// 스택이 공백 상태인 경우
		printf("\n\n Stack is Empty!!\n");
		return 0;
	}
	else return stack[top--];	// 현재 top의 원소를 삭제한 후 top 감소
}

// 스택의 top 원소를 검색하는 연산
element peek() {
	if (isEmpty()) {			// 스택이 공백 상태인 경우
		printf("\n\n Stack is Empty !\n");
		exit(1);
	}
	else return stack[top];		// 현재 top의 원소 확인
}

// 스택의 원소를 출력하는 연산
void printStack() {
	int i;
	printf("\n STACK [ ");
	for (i = 0; i <= top; i++)
		printf("%d ", stack[i]);
	printf("] ");
}

void main(void) {
	element item;
	printf("\n** 순차 스택 연산 **\n");
	printStack();
	push(1);	printStack();		// 1 삽입
	push(2);    printStack();		// 2 삽입
	push(3);	printStack();		// 3 삽입

	item = peek(); printStack();	// 현재 top의 원소 출력
	printf("peek => %d", item);

	item = pop();  printStack();	// 삭제
	printf("\t pop  => %d", item);

	item = pop();  printStack();	// 삭제
	printf("\t pop  => %d", item);

	item = pop();  printStack();	// 삭제
	printf("\t pop  => %d", item);

	getchar();
}

 


더 많은 C코드가 보고 싶다면?

https://chuinggun.tistory.com/category/C%EC%96%B8%EC%96%B4

댓글