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;
}
4

3 に答える 3

0

2 つの異なるがありtqueue、どちらも と呼ばれqます。1 つ ( で作成したものcreate) を初期化し、もう 1 つ ( で作成したもの) を初期化mainしません。

于 2012-05-09T10:11:34.570 に答える
0

create()の結果をto に代入しませんでしたq。次の例では、結果を呼び出しcreate() て破棄qし、元の状態のままにします。

create(size);

修正するには、上記の行を次のように置き換えます。

q = create(size);
于 2012-05-09T10:11:54.717 に答える
0

戻り値を割り当てるのを忘れました:

q = create(size);
于 2012-05-09T10:12:23.563 に答える