Stack을 짜는데..
두나
질문 요약 :오랜만에 Stack을 짜는데 나름 제대로 짰다고 생각하는데 Delete부분이 실행이 제대로 안되네요.
insert는.. 숫자를 넣고나서 그 값을 출력하게 했는데 제대로 되는걸 보니 입력이 된것 같은데
delete할때는 자꾸 stack이 비었다고 나오네요(분명 값을 넣었는데 empty함수가 적용되나봐요)
도와주세요.ㅠㅠ
=================================
#include stdio.h
#define Max_size 10
typedef int element;
int *top;
int i, data;
element student[Max_size];
int Is_empty(int *t) // Empty
{
if( t == NULL )
{
return 1;
}
else
return 0;
}
int Is_full(int *t) // Full
{
if(t == &student[Max_size-1])
{
printf(Stack is full.\n);
return 1;
}
else
return 0;
}
void Push(element d, int *t)
{
if( Is_full(t) == 1)
return;
else
{
if( Is_empty(t) == 1)
{
t = student;
*t = d;
}
else
*(++t) = d;
printf(%d was put in the stack.\n, *t);
return;
}
}
element Pop(int *t)
{
if( Is_empty(t) == 1)
return 0;
else
return (*t)--;
}
void main()
{
top = NULL;
do
{
printf(===Menu===\n1. Insert\n2. Delete\n3. Exit\nEnter the number: \n);
scanf(%d, &i);
switch(i)
{
case 1: printf(Enter an any number: );
scanf(%d, &data);
Push(data, top);
break;
case 2: data = Pop(top);
if( data == 0)
printf(Stack is empty\n);
else
printf(%d was deleted.\n, data);
break;
case 3: printf(Thank you.\n);
break;
default: printf(Wrong number.);
&nbs림}
}while(i != 3);
}
=========================================
-
아이폰 2025-03-16
아!! t값의 변화를 top에게 돌려주지 않았군요.. 감사합니다!! 그리고, 혜읍님 element를 지정해준건, 제가 혹시 나중에 stack의 자료형을 변화를 줘보고 싶을때(비슷한데 char로 받고싶다거나..) 그럴때 편하게 한번에 바꾸려고 한거였답니다^^; 두분 다 감사해요~
-
에다 2025-03-16
여기서는 더블 포인터를 이용해서 포인터를 가리키는 포인터를 사용하면 됩니다.
혹은 정수형 변수로 스택에 들어있는 개수를 저장하고 그 값을 배열의 인덱스로 사용하면 비슷하게 떨어지겠죠.. 초기값은 -1로 하면 되겠구요 ^^ -
쥬디시어스 2025-03-16
전역변수 top과 지역변수 t가 같다 라는 생각에서 오류가 생긴거 같습니다.
top와 t의 값은 같지만 동일하지는 않습니다. top의 내용이 t로 복사된후 t를 이용해서 스택값을 저장합니다. 그리고 t의 값을 증가시켜 다음 인덱스를 가르키게 하지요. 하지만 t는 top가 아니죠..
t는 함수가 종료된후.. 사라집니다. top는 여전히 null 이죠 ^^
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2690920 | 무슨 의미 인가요? | 딸기맛캔디 | 2025-04-09 |
2690891 | c++ 은행계좌 프로그램 | 알찬마루 | 2025-04-08 |
2690834 | c언어 if문에서 출력 질문합니다 ㅜㅜ (2) | 파랑새 | 2025-04-08 |
2690809 | c언어 질문좀 부탁드리겠습니다 | 개구리 | 2025-04-08 |
2690777 | 말 표현에서 궁금한점이 있습니다. 배열을 통째로 넘겨받으려면 매개변수로 배열을 선언할 수 있어야한다? (8) | 별햇님 | 2025-04-07 |
2690749 | 피라미드 질문드립니다 (for문 한개) | 도래솔 | 2025-04-07 |
2690718 | 함수 포인터반환 함수 질문 | 에드워드 | 2025-04-07 |
2690685 | 2중for문 도와주세여..;; | 흰추위 | 2025-04-07 |
2690655 | 팩토리얼 계산문제..질문~ (9) | 옆집꼬마야 | 2025-04-06 |
2690627 | c 변수 선언후 변수값 저장안하고 출력 | 방방 | 2025-04-06 |
2690600 | 릴리즈 모드로 컴파일해서 다른 컴퓨터에서도 실행파일을 실행할수 있는 방법 알려주세요 (5) | 제나 | 2025-04-06 |
2690576 | bin파일 저장 | 다올 | 2025-04-06 |
2690547 | C언어 뒷부분이라 너무 어려워서요;; 프로그래밍 하나만 부탁드립니다 (4) | 그루터기 | 2025-04-05 |
2690517 | cygwin에서요.. (1) | 엘보어 | 2025-04-05 |
2690486 | 문자열과 문자형이요 ~ | 다스리 | 2025-04-05 |
2690344 | 일본어 주석 깨짐 문제 (3) | 연하얀 | 2025-04-04 |
2690314 | 암호문 만들기 -비제네르- | 이퓨리한나 | 2025-04-03 |
2690292 | 왕초보자의 질문!!!!!! 도와주세요 (1) | 하랑 | 2025-04-03 |
2690269 | 정올 문제 인데.. 흠 | 반월 | 2025-04-03 |
2690237 | sizeof에서 short형을 썻는데 왜 4byte가 나올까요? (1) | 바나나 | 2025-04-03 |