2012-05-09 2 views
0

동적 배열로 큐를 만들고 싶습니다. 문제점은 int main()에서 q.rear 값을 테스트 할 때 (나중에 데이터를 삽입 할 때) -1이 아닌 것입니다. 나는 어느 부분을 잘못 했습니까?대기열이 제대로 후방 값을 반환하지 않습니까?

여기에 코드 조각입니다 :

#include <stdio.h> 
#include <conio2.h> 
#include <stdlib.h> 

typedef struct{ 
    int *data; 
    int front,rear,max; 
    }tqueue; 
tqueue create(int size) 
{ 
    tqueue q; 
    q.data=(int *)malloc(size*sizeof(int));   
    q.front=0; 
    q.rear=-1; 
    q.max=size; 
    return q; 
} 
int main() 
{ 
    tqueue q; 
    int size=4; 
    create(size); 
    printf("\n%d",q.rear); 
    getch(); 
    return 0; 
} 
+0

내 잘못, 감사합니다. :) – mollyeah

답변

0

create()의 결과를 q에 지정하지 않았습니다.

create(size); 

이, 수정과 위의 라인을 교체하려면 : : 원래의 상태로 q를 떠나 다음 통화 create()그 결과을 폐기은

q = create(size); 
0

당신은 두 개의 서로 다른 tqueue의이, 모두 q을했다. 하나 (create에 생성 한 것)를 초기화하고 하나는 생성합니다 (main에 생성 한 것).

0

당신은 반환 값을 할당하는 것을 잊었다 :

q = create(size); 
관련 문제