队列没有正确返回后值?

时间:2012-05-09 10:10:00

标签: c queue

我想用动态数组创建队列,问题是当我在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;
}

3 个答案:

答案 0 :(得分:0)

您有两个不同的tqueue,均称为q。您初始化的一个(您在create中创建的那个)和一个(您在main中创建的那个)没有。

答案 1 :(得分:0)

您未将create()的结果分配给q。以下调用create() 并放弃结果,使q保持原始状态:

create(size);

要修复,请将以上行替换为:

q = create(size);

答案 2 :(得分:0)

您忘记分配返回值:

q = create(size);