구조체를 이용한 큐 구현
둘삥
질문 제목 : 구조체를 이용한 큐 구현질문 요약 :포인터를 이용하지 않고 구조체 접근변수 이용 하는 법으로만 작성을 하고 싶어요질문 내용 : #includestdio.h
#includestdlib.h
#define MAXQUE 100struct que{
int front;
int rear;
int item[MAXQUE];
}; void push(struct que rear, int x);
int pop(struct que front);
void rear_full();
void front_empty();
void main()
{
struct que q;
int data,select; q.front=-1;
q.rear=-1; do{
printf( 1번 데이타를 삽입\n);
printf( 2번 데이타를 삭제\n);
printf( 3번 종료 \n);
scanf(%d,&select); if(select == 1)
{
printf(데이타 입력);
scanf(%d,&data);
push(q, data);
}
else if(select == 2)
{
printf(삭제된 데이타 = %d\n,pop(q));
}
}while(select != 3);
}
void push(struct que q, int x)
{
if(q.rear==MAXQUE-1)
rear_full();
else
{
q.item[q.rear++]=x;
}
}
int pop(struct que q)
{
int popdata; if(q.front==q.rear)
front_empty();
else
{
popdata=q.item[++q.front];
}
return(popdata);
}
void rear_full()
{
printf(꽉차있습니다\n);
exit(1);
}
void front_empty()
{
printf(비어있습니다\n);
exit(1);
}
이 소스 디버그를 돌리면....
push()함수를 호출시켰을때배열의 증가 값이 메모리에 저장이 안되고계속 -1로 초기화 된상태에서 실행이 되게되는데요
아직 제가 구조체의 정의에 대해서 잘 모르는거 같아요아니면 메모리 접근 방법에 대해서 잘 모르는것 일수도 있고요인자를 포인터로 접근하면 -1로 초기화가 안되고 계속 증가되는게 메모리에 저장이 되어 증감이 제대로 이루어지는데요....
정말 답답해요......
제가 지제가 지금 설명하는게.....이해가 잘 안가실수도..제가 말해놓고는 무슨말을 하는건지 모르겠네요....
아무튼 해석이 되셨으면...도와주시면 감사하겠습니다....
-
라별
정말 감사합니다!!!!!! 죄송하지만 네이트온 친추 해도 될까요?? 도움좀 주시면 감사하겠습니다...
제가 C는 그래도 어느정도 한다고 생각했는데....
지금 읽자마자 이해가 쏙쏙 됬네요
한심하네요 제가...ㅠ -
헛매질
문제원인은 함수 호출시 call by reference와 call by value의 차이 입니다. 현재 call by value로 호출하고 있는데 호출시 구조체형 포인터로 넘겨줘야 됩니다. 굳이 포인터를 안쓰실려면 구조체를 전역으로 선언해 주시고 함수인자로 빼면 되구요.
pop push 함수에서 인덱스 조정하는 부분도 잘못 된거 같아요 -1에 넣을순 없겠져?ㅎ
추가로 더 말씀드리면 push, pop 은 stack에서 쓰이구요 put, get이 queue
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2697634 | c언어로 감성사전 만들기! (1) | 도란도란 | 2025-06-09 |
2697605 | 이 함수좀... | agine | 2025-06-09 |
2697574 | 배열 기본적인질문 (3) | 민트향 | 2025-06-09 |
2697549 | 배열 초기화 (4) | 나리 | 2025-06-08 |
2697465 | 수다님...^^ (2) | 가론 | 2025-06-08 |
2697432 | 서버 만드는 함수에서 궁금한게있어요~ | 파랑 | 2025-06-07 |
2697401 | 열혈강의 문제오류 (1) | 꿈 | 2025-06-07 |
2697374 | 기초적인 C언어 프로그래밍 입니다. | 얼 | 2025-06-07 |
2697341 | 좌우대칭 문제인데 Q가 입력되면 종료가 되야하는데 되지않습니다 | 무지개 | 2025-06-07 |
2697314 | fprintf와 fscanf 로 파일 입출력 할떄 | 밝음이 | 2025-06-06 |
2697293 | 툴 소스 뽑아내는법 | 도움 | 2025-06-06 |
2697264 | 소소한거 두어가지 질문할께요~ (8) | 별솔 | 2025-06-06 |
2697235 | scanf로 인풋 받을 때?! | 보담 | 2025-06-06 |
2697207 | 열혈강의 연습문제 질문이요~ (2) | 맥적다 | 2025-06-05 |
2697182 | strcmp, strtok - 어떤 기능을 하는지... | 루다 | 2025-06-05 |
2697129 | [질문] 아래 저축액을 계산하는 프로그램 ㅠ 추가 질문 (7) | 찬늘 | 2025-06-05 |
2697072 | 쌩초보 질문! (1) | 얀 | 2025-06-04 |
2697050 | 도움부탁드립니다.. | 화이트 | 2025-06-04 |
2697023 | gotoxy함수, 어떻게 사용하죠? (3) | 적송 | 2025-06-04 |
2696994 | c언어를 막 시작한 초보인데 질문이 있어용 ㅠㅠ (2) | 귀1여운렩 | 2025-06-03 |