지인이 나중에 자료구조 배우면 스택, 큐 기타 등등 아무튼 미리 한번 해보라고 스택 작동방식? 을 조금 알려주셨습니다. 그리고 c로 저보고 구현해보라고 하셔서 해봤습니다.
하는데 대충 1시간 40분 정도 걸렸던 거 같습니다. 그리고 제가 아직 포인터를 잘 못 다뤄서 구조체를 사용하여 구현하는 방식은 나중에 더 배우고 해 보겠습니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int stack[5];
int top = 0; // 현 index 위치. (쌓은 높이)
int Check_Empty() //스택 공백일때 오류검출
{
if (top == 0) //에러 나면
{
printf("\n\nStack Empty\n\n"); //에러 문구 출력
return 0;
}
else //에러 없으면
{
return 1;
}
}
int Check_Full() //스택 꽉찼을때 에러문구 출력
{
if (top > 4) //꽉찼으면
{
printf("\n\nStack Full\n\n");
return 0;
}
else //에러 없으면
{
return 1;
}
}
int push(int data) //스택에 원소 추가
{
if (Check_Full())
{
stack[top++] = data;
}
else
{
}
}
int pop() //스택에 원소 제거
{
if (Check_Empty())
{
top--;
}
}
int printStack() //스택 모든 원소 출력
{
if (Check_Empty())
{
printf("\n");
for (int i = 0; i < top; i++)
{
printf("%d ", stack[i]);
}
printf("\n\n");
}
}
int main()
{
int a;
int num;
while (1)
{
printf("\npush은 1번\npop은2번\n스택출력은 3번\n4번은 종료\n");
scanf("%d", &a);
switch (a) {
case 1:
printf("\n\n값 입력: ");
scanf("%d", &num);
push(num);
continue;
case 2:
pop();
continue;
case 3:
printStack();
continue;
case 4:
break;
}
break;
}
}
본 게시물은 제가 공부한 내용을 올린 글이라 내용이 틀리거나 오류가 있을 수도 있습니다. 만약 그럴 시 jaewonahn1234@gmail.com으로 피드백해주시면 감사하겠습니다.
'SW > C, C++' 카테고리의 다른 글
(C언어) atof() atol() atoi() 함수 (0) | 2021.12.30 |
---|