포인터+큐 프로그램 짜다가 질문 있어서 올립니다.
무크
#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* 타입인가요?
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2676005 | keybd_event 게임 제어 | 영글 | 2024-11-23 |
2675900 | 진짜기본적인질문 | 글길 | 2024-11-22 |
2675845 | 수정좀해주세요ㅠㅠㅠ | 해골 | 2024-11-21 |
2675797 | 병합 정렬 소스 코드 질문입니다. (2) | 도래솔 | 2024-11-21 |
2675771 | 큐의 활용이 정확히 어떻게 되죠?? | 해긴 | 2024-11-21 |
2675745 | 도서관리 프로그램 질문이요 | 도리도리 | 2024-11-20 |
2675717 | 2진수로 변환하는것! (3) | 동생몬 | 2024-11-20 |
2675599 | for문 짝수 출력하는 법 (5) | 널위해 | 2024-11-19 |
2675575 | Linux 게시판이 없어서.. | 첫삥 | 2024-11-19 |
2675545 | 구조체 이용할 때 함수에 자료 넘겨주는 것은 어떻게 해야 하나요? | 아연 | 2024-11-19 |
2675518 | 사각형 가로로 어떻게 반복해서 만드는지좀.. 내용 | 신당 | 2024-11-18 |
2675491 | !느낌표를 입력하는것은 어떻게합니까~~?ㅠㅠ (5) | 사지타리우스 | 2024-11-18 |
2675411 | 파일입출력으로 받아온 파일의 중복문자열을 제거한 뒤 파일출력 | 앨버트 | 2024-11-17 |
2675385 | 링크드리스트 주소록 질문드립니다. (1) | 겨루 | 2024-11-17 |
2675356 | 2진수를 10진수로 바꾸려고 하는데 막히네요.. | 풀잎 | 2024-11-17 |
2675297 | Prity 비트 발생기 | 한란 | 2024-11-16 |
2675249 | C책 좀 추천해 주세요 (2) | 딸기우유 | 2024-11-16 |
2675193 | 연습문제 17-1 질문입니다. | 한별나라 | 2024-11-15 |
2675172 | 소스점 | 아이뻐 | 2024-11-15 |
2675146 | 단순 연결 리스트인데 출력결과가 이상하게 나와요. | 찬늘봄 | 2024-11-15 |