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 이죠 ^^
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2700368 | if에 관해서 질문이요... | Orange | 2025-07-04 |
2700339 | 이거 결과값이 왜이런건지.. (4) | 그댸와나 | 2025-07-04 |
2700313 | 파일 읽어서 저장하는데 빈파일일 경우 문재가 발생하네요.. (2) | 크나 | 2025-07-03 |
2700287 | 구조체 동적할당 연습을 하는데 오류가 뜹니다...(해결) (3) | 아련나래 | 2025-07-03 |
2700264 | 문자와 숫자 동시에 입력??? | 글고운 | 2025-07-03 |
2700236 | txt파일로만 쓰고 읽게 하려면 어떻게 해야 하나요..?? (8) | 미국녀 | 2025-07-03 |
2700211 | 전위 연산자 (2) | 어른처럼 | 2025-07-02 |
2700183 | C에서 파일이름을 받고, 그 파일의 사이즈를 출력해줘야하는데 내용이 출력이 안되네요 ;ㅅ; | 피스케스 | 2025-07-02 |
2700150 | 꼭좀 도와주세요ㅠㅠㅠ | 호습다 | 2025-07-02 |
2700095 | 연산문제...질문... | 오빤테앵겨 | 2025-07-01 |
2700070 | while문 , 3의배수 출력하는 프로그램좀 짜주세욤. | 횃불 | 2025-07-01 |
2700041 | 초보인데요 ㅎ 배열안에 배열을 집어넣을수 있나요?? | 헛장사 | 2025-07-01 |
2700012 | 배열// (1) | 전갈자리 | 2025-07-01 |
2699895 | 무한루프에 빠집니다.!! 해결좀부탁드려요 (10) | 선아 | 2025-06-30 |
2699842 | 질문을 너무 많이 하네여.....죄송.... (2) | 해님꽃 | 2025-06-29 |
2699816 | 오류 질문입니다.. (1) | 해비치 | 2025-06-29 |
2699763 | 질문입니다 ! 꼭 좀 도와주세요ㅠㅠ (2) | 미라 | 2025-06-28 |
2699555 | c언어 다항식을 입력을 했는데 왜 출력이 안될까요? | 피스케스 | 2025-06-27 |
2699528 | C언어 포인터연산 질문입니다. (3) | 안녕나야 | 2025-06-26 |
2699476 | 끌어올림;;달력 짜봤는데요 이 소스 줄일 수 있나요? - 스샷첨부 (2) | 클라우드 | 2025-06-26 |