포인터+큐 프로그램 짜다가 질문 있어서 올립니다.
무크
#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* 타입인가요?
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |
2691697 | if 문에서 구조체 배열에 저장되있던 문자열 검사하는 법 ? (2) | 민트맛사탕 | 2025-04-16 |
2691678 | C언어 함수 질문이요~!!! | 연보라 | 2025-04-15 |
2691650 | 반복문 | 돋가이 | 2025-04-15 |
2691618 | 링크드리스트 개념 질문이예요 (3) | 맨마루 | 2025-04-15 |
2691592 | 동적할당 이용 배열선언 질문입니다.ㅠㅠ (3) | 허리달 | 2025-04-15 |
2691542 | /=의 용도를 알려주세요 ㅠㅠ! (2) | 아라 | 2025-04-14 |
2691510 | sizeof 연산자 질문입니다 (2) | 종달 | 2025-04-14 |
2691483 | 파일 오픈시 에러 질문드립니다. (2) | 호습다 | 2025-04-14 |
2691450 | [visual c++ 툴]기초 질문 (3) | 해긴 | 2025-04-13 |
2691393 | UNIX 시스템을 사용하려면 어떤 프로그램이 좋을까요? (5) | 든솔 | 2025-04-13 |
2691334 | ㅠㅠ에러 (1) | Loseless | 2025-04-12 |
2691304 | 포인터배열에 대해 질문요 | 달님 | 2025-04-12 |
2691279 | float-정수변환-2진수변환 | 핫블루 | 2025-04-12 |
2691224 | 인자관련 질문입니다. (2) | 아잉형님 | 2025-04-11 |