Stack -(Quize 1)

채재헌·2022년 7월 15일
0

🎈1.문제 설명

아래 메인 함수가 동작될 수 있도록 스택을 만드시오.

int main() {
  Stack s;
  create(&s,3);
  push(&s, 10);
  push(&s, 20);
  push(&s, 30);
  push(&s, 40);
  for (int i = 0 ; i < 3 ; i++)
    printf("%d\n", pop(&s) );
  pop(&s);
  return 0;
}

🎆2. 코드 + 주석

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define MAX_STACK_SIZE 100 
typedef int element;
typedef struct {
	element data[MAX_STACK_SIZE];
	int top;
}Stack;
//스택 생성 함수 
void create(Stack* s, int size)
{
	s->data[MAX_STACK_SIZE] = size;
	s->top = 1;
}
//공백 상태 검출 함수 
int is_empty(Stack* s)
{
	return (s->top == -1);
}
//포화 상태 검출 함수 
int is_full(Stack* s)
{
	return (s->top == (MAX_STACK_SIZE - 1));
}
//삽입 함수
void push(Stack* s, element item)
{
	if (is_full(s)) {
		fprintf(stderr, "스택 포화 에러 \n");
		return;
	}
	else {
		s->data[++(s->top)] = item;
	}
}
// 삭제 함수 
element pop(Stack* s)
{
	if (is_empty(s)) {
		fprintf(stderr, "스택 공백 에러");
		exit(1);
	}
	else {
		return s->data[(s->top)--];
	}
}

int main(void)
{
	Stack s;
	
	create(&s, 3);

	push(&s, 10);
	push(&s, 20);
	push(&s, 30);
	push(&s, 40);

	for (int i = 0; i <= 3; i++)
		printf("%d\n", pop(&s));

	pop(&s);
	return 0;
}

3. 출력화면

🎇4. 느낌점

이번 자료구조의 Stack 부분의 수업을 듣고 스스로 stack을 만들어 본 결과 스택을 만들기 위해 필요한 동적 할당을 기반으로 한 creat 함수와 나머지 스택이 비어있을때와 꽉 차있을때, 값을 넣기, 값을 빼기, 등 스택에 필요한 여러 가지 함수들이 가지는 구동 원리를 알게 되었다. 사실 처음에 스택을 만들면서 동적 할당을 어떻게 할지 잘 모르고 나머지 구동하는 함수들을 구동하기 위한 코드를 짜기 어려움이 있었지만, 스택의 값과 top의 위치를 통해 해결할 수 있었고, 이를 통해 stack을 구현하는데 성공한 것 같다.

0개의 댓글