포인터+큐 프로그램 짜다가 질문 있어서 올립니다.
꽃여름
#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값이 최초의 값이 나오는 것이 아니라, 맨 나중에 입력된 값이출력됩니다.
이문제를 어떻게 해결해야 하죠? 갈길이 먼데 이 문제때문에 끙끙되고 있습니다 고수님들 도와주세요 ㅠㅠ
-
큰모듬
struct node.dataPtr은 왜 int* 타입인가요?