스택 배열 관련 질문입니다. visual studio 2022입니다.
-
게시물 수정 , 삭제는 로그인 필요
#include <stdio.h>
#define stackLen 5
typedef char data;
struct Stack {
data Arr[stackLen];
int top;
} S;
void stack() {
S.top = -1;
}
int IsEmpty() {
if (S.top <= -1)
return 1; //empty
else
return 0; //not empty
}
void showStackData() {
printf("\n< stack > : ");
for (int x = 0; x <= S.top; x++) {
printf("%c ", S.Arr[x]);
}
}
void push(data e) {
if (S.top >= stackLen - 1) {
printf("\nError : 삽입불가! 포화상태입니다.");
}
S.top += 1;
S.Arr[S.top] = e;
showStackData();
}
char pop() {
if (S.top < 0) {
printf("\nError : 삭제불가! 공백상태입니다.");
return '\n';
}
S.top -= 1;
showStackData();
return S.Arr[S.top + 1];
}
int main() {
int num;
char val;
stack(); //스택 생성
while (1) {
printf("\n< Stack > 1. 자료 삽입 2. 자료 삭제 3. 프로그램 종료 : ");
do {
scanf("%d", &num);
} while (num < 1 || num > 3);
switch (num) {
case 1: printf("삽입할 값은? ");
while (getchar() != '\n'); //버퍼에 남아 있는 자료 없애기...
scanf("%c", &val);
push(val); break;
case 2:
char ch = pop();
if (ch != '\n')
printf("\n%c가 삭제되었습니다.", pop());
break;
}
if (num == 3) break;
}
return 0;
}
이런 스택 배열은 짜보았는데 여기서 디버그는 잘뜨는데 자료 삭제를 할때 문제가 2개씩 삭제가 됩니다. 근데 이게 왜 잘못되었는지를 모르겠습니다. 삭제가 두개씩 되어서 도와주셧으면 합니다. ㅎㅎ
#스택 배열 #스택 배열로 구현 #스택 배열 연결리스트 장단점 #스택 배열 구현 #스택 배열 자바 #스택 배열 생성 #스택 배열 초기화 #스택 배열 자료구조 #자바 스택 배열 변환 #c언어 스택 배열