공부하시는대에 도움이 됐으면 좋겠습니다.
답안코드 확인해주세요!
더보기
#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코드가 보고 싶다면?
'C언어' 카테고리의 다른 글
[C언어] Queue 큐 를 생성 공백검사 포화상태 front입력 rear입력을 하는 코드를 작성하고 테스트하시오 (0) | 2022.12.10 |
---|---|
[C언어] 스택(stack) 에서 후위 표기법 수식을 계산하는 evalPostfix(char *exp) 함수를 작성하고 테스트하는 프로그램을 작성하시오 (0) | 2022.12.10 |
[c언어] 다항식 리스트를 생성 덧셈 추가 출력하는 함수를 작성하고 테스트하는 프로그램을 작성하시오 (0) | 2022.12.10 |
[c언어] 이중 연결 리스트를 작성하는 프로그램을 작성하고 테스트하시오 (0) | 2022.12.10 |
[c언어] 원형 연결 리스트를 생산하고 삽입하는 프로그램을 작성하시오 (0) | 2022.12.10 |
댓글