링크드 리스트를 이용한 동적 큐를 구현한건데.. 실행버그가 있
글쓴이: shs0917 / 작성시간: 수, 2004/03/31 - 4:15오후
#include <stdio.h> #include <stdlib.h> #define MAX_QUEUES 10 #define IS_FULL(temp) (!(temp)) #define IS_EMPTY(front) (!(front)) typedef struct _element element; struct _element{ int key; }; typedef struct queue *queue_pointer; struct queue{ element item; queue_pointer link; }; void addq(queue_pointer *front, queue_pointer *rear, element item); element deleteq(queue_pointer *front); int main(void){ int i; element item[MAX_QUEUES]; queue_pointer front[MAX_QUEUES] = {NULL}, rear[MAX_QUEUES] = {NULL}; for(i = 0; i < MAX_QUEUES; i++){ item[i].key = i; addq(&front[i], &rear[i], item[i]); printf("[%d]rear->item: %d\n", i, rear[i]->item.key); } printf("\n\n"); for(i = MAX_QUEUES - 1; i >= 0; i--){ //i = MAX_QUEUES - 1; //while(!IS_EMPTY(front[i])){ printf("[%d]front->item: %d\n", i, deleteq(&front[i]).key); //i--; } return 0; } void addq(queue_pointer *front, queue_pointer *rear, element item){ queue_pointer temp = (queue_pointer)malloc(sizeof(temp)); if(IS_FULL(temp)){ fprintf(stderr, "The memory is full\n"); exit(1); } temp->item = item; temp->link = NULL; if(*front) *rear = temp; else *front = temp; *rear =temp; } element deleteq(queue_pointer *front){ queue_pointer temp = *front; element item; if(IS_EMPTY(*front)){ fprintf(stderr, "The queue is empty\n"); exit(1); } item = temp->item; *front = temp->link; free(temp); return item; }
deleteq에서 free하는게 잘못된거 같은데요.. free를 없애면 에러가
안나거던요.. 컴파일할때는 경고도 하나 안뜨던데.. 그리고.. 옆에서 누가
프리 안해줘도 컴파일러가 알아서 해준다면서 그러던데.. 요즘 C 컴파일러는
free도 알아서 해주나요?? 답변 주시는 분들께 미리 감사 드립니다.
Forums:
혹시 컴파일러를 확인해보실래요?전 대략 되는거 같은데.. 에러 없이.
혹시 컴파일러를 확인해보실래요?
전 대략 되는거 같은데.. 에러 없이.. 그래서 이유도 모르겠군요... 이런~
도움이 안되서 죄송합니다.. 코드는 대략 봐서 제대로 모르겠습니다..
어디서 문제가 나는지.. 무슨 문제가 나는지...
----
먼저 알게 된 것을 알려주는 것은 즐거운 일이다!
http://hangulee.springnote.com
http://hangulee.egloos.com
^^;
에서 sizeof(temp)를 다음과 같이 바꿔야 하지 않을까요
^-^
-----------
청하가 제안하는 소프트웨어 엔지니어로써 재미있게 사는 법
http://sozu.tistory.com
아.. 제가 잘못 사용했군요.. 감사합니다.. 동적할당은 처음 사용해
아.. 제가 잘못 사용했군요.. 감사합니다.. 동적할당은
처음 사용해보는 거라서 잘 몰랐습니다.. 감사합니다.
컴퓨터가 이해할수 있는 코드는 어느 바보나 다 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다 - 마틴파울러
댓글 달기