큐를 링크드리스트로 짜봣는데요 자꾸 런타임 오류가 나네요 고수님들 좀 도와주세요
앵겨쭈
질문 제목 : 런타임 오류질문 요약 :인큐, 프린트, 써치는 다되는데 디큐에서 오류가나는것같습니다질문 내용 : 코드를 올리겟습니다.
#includestdio.h
struct node
{
int key;
struct node *next;
};
struct node *front, *rear;
int i;
int empty(void)
{
if(front == null && rear == null)
{
return 1;
}
else
return 0;
}
void enquene(int a)
{
struct node *temp;
temp = (struct node *)malloc(sizeof(struct node));
temp-key = a;
temp-next = rear;
rear = temp;
}
void dequene(void)
{
struct node *temp;
temp = front-next;
front-next = temp-next;
free(temp);
}
void print(void)
{
struct node *temp;
for(temp = rear; temp != null; temp = temp-next)
{
printf(%d , temp-key);
}
}
int search(int a)
{
int count = 0;
struct node *temp;
for(temp = rear; temp != null; temp = temp-next)
{
if(temp-key == a)
{
count++;
}
}
return count;
}
int main(void)
{
int a = 0;
while(i != 4)
{
printf(\n큐(quene)\n);
printf(1 : enquene\n);
printf(2 : dequene\n);
printf(3 : print\n);
printf(4 : quit\n);
printf(5 : search\n\n);
scanf(%d, &i);
if(i == 1)
{
printf(큐에 넣을 숫자를 입력하시오 - );
scanf(%d, &a);
if(search(a) == 0)
{
enquene(a);
}
else
printf(\n같은숫자가 있습니다. 다른숫자를 입력하세요\n);
}
else if(i == 2)
{
if(empty())
{
printf(큐가 비었습니다.\n);
}
else
{
dequene();
printf(rear로 해서 지워졌습니다.\n);
}
}
else if(i == 3)
{
if(empty())
{
printf(큐가 비었습니다.\n);
}
else
{
printf(\n);
print();
printf(\n);
}
}
else if(i == 4)
{
break;
}
else if(i == 5)
{
printf(\n숫자를 입력하시오 - );
scanf(%d, &a);
if(search(a) == 0)
{
printf(같은숫자가 없습니다.\n);
}
else
printf(\n같은숫자가 %d개 있습니다.\n, search(a));
}
else
printf(잘못입력하였습니다.\n);
}
}
-
안토니
감사합니다~
-
정훈
인큐에서도 front는 건들지도 않고 초기화를 해주지 않았네요. 그리고 디큐할때 큐에 자료가 있는지 등의 예외검사도 해주세요
front, rear 개념도 살짝 이상한거 같습니다 ㅎ;;