포인터+큐 프로그램 짜다가 질문 있어서 올립니다.
무크
#include stdio.h
#include malloc.h
#include stdlib.h
typedef struct node
{
int *dataPtr;
struct node* next;
}SPACEOF;
typedef struct
{
SPACEOF* front;
SPACEOF* rear;
int count;
}OFDATA;
char key;
int data;
int *data1,*data2;
void showMenu();
char makeChoice(OFDATA* ofdata);
OFDATA* initialQ(void);
int showFront(OFDATA* dataP,void** itemPtr);
void main()
{
OFDATA *dataP;
SPACEOF *bigP;
dataP=(OFDATA*)malloc(sizeof(OFDATA));
bigP=(SPACEOF*)malloc(sizeof(SPACEOF));
memset(dataP, 0, sizeof(OFDATA));
for(;;)
{
showMenu();
scanf(%d,&key);
if (key==1){
printf(수를 입력하세요.(단, 양수를 입력하세요)\n);
scanf(%d,&data);
while(data=0){
printf(수를 입력하세요.(단, 양수를 입력하세요)\n);
scanf(%d,&data);
}
bigP-dataPtr=data;//bigP(SPACEOF)안에
bigP-next=NULL;
if(dataP-count!=0){
dataP-rear-next=bigP;
}
else{
dataP-front=bigP;
}
(dataP-count)++;
dataP-rear=bigP;
}
else if(key==2){
SPACEOF* deleteD;
deleteD=(SPACEOF*)malloc(sizeof(SPACEOF));
if(!dataP-count){
printf(뺄 값이 없습니다.\n);
return 0;
}
deleteD = dataP-front;
data2=dataP-front-dataPtr;
if(dataP-count==1)
dataP-rear=dataP-front=NULL;
else{
printf(1);
dataP-front=dataP-front-next;
data1 = dataP-rear-dataPtr;
}
(dataP-count)--;
printf(%d를 출력하고 삭제합니다.\n,data2);
printf(%d rear\n,data1);
free (deleteD);
}
else if(key==3)
{
showFront(dataP,&data1);
printf(front 값은 %d,data1);
}
else if(key==9)
exit(0);
}
}
void showMenu()
{
printf(*****************************************\n);
printf(* 1. 수를 입력하겠습니다. \n);
printf(* 2. 수를 출력하겠습니다. \n);
printf(* 3. Front값을 보여줍니다. \n);
printf(* 4. Rear 값을 보여줍니다. \n);
printf(* 5. 현재 입력된 수의 개수를 출력합니다.\n);
printf(* 6. 큐가 비어있는지 확인합니다.\n);
printf(* 7. 큐가 꽉차있는지 확인합니다.\n);
printf(* 8. 큐 자체를 파괴시킵니다.\n);
printf(* 9. 프로그램을 종료합니다.\n);
printf(*****************************************\n);
}
int showFront(OFDATA* dataP,void** itemPtr)
{
if(!dataP-count)
return 0;
else
{
*itemPtr=dataP-front-dataPtr;
return 1;
}
}
위 소스는 데이터구조의 포인터와 큐부분 응용해서 만들고 있는 소스입니다.
잘 안되는 부분이 있어서 질문 올립니다..
1번을 눌러서 입력을 시켜서 front값과 rear값을 계속 만들어 나갑니다.
그리고 2번을 눌러서 front값을 출력 및 삭제해야 합니다. 그런데 여기서요
front값이 최초의 값이 나오는 것이 아니라, 맨 나중에 입력된 값이출력됩니다.
이문제를 어떻게 해결해야 하죠? 갈길이 먼데 이 문제때문에 끙끙되고 있습니다 고수님들 도와주세요 ㅠㅠ
-
벤자민 2024-05-25
struct node.dataPtr은 왜 int* 타입인가요?
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2697952 | 2차배열과 함수문의^^; | VanilLa | 2025-06-12 |
2697924 | 다차원 배열 질문있습니다 | 두동 | 2025-06-12 |
2697893 | 정올 :: 기초다지기 a9007 배열7 (문제가 이상함 -_-) | 흰두루 | 2025-06-12 |
2697862 | Unable......... 지정된 파일을 찾을 수 없습니다!! (1) | Creator | 2025-06-11 |
2697761 | 그러니까여제말은... (2) | 새론 | 2025-06-10 |
2697737 | 정올 문제좀 풀어보신분~ | 레오 | 2025-06-10 |
2697709 | rand함수 질문좀요! (6) | 가막새 | 2025-06-10 |
2697683 | C언어 변수뒤 표시가 이해안되는게 있습니다. | 소미 | 2025-06-10 |
2697660 | 껍데기딜 만들고 난후 어느핫키 누르면 코드검색이라도 뜨고 그다음 무반응 해결좀 (2) | 움찬 | 2025-06-09 |
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 |