Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 无法使用数组将循环队列排入队列_C_Function_Queue_Malloc - Fatal编程技术网

C 无法使用数组将循环队列排入队列

C 无法使用数组将循环队列排入队列,c,function,queue,malloc,C,Function,Queue,Malloc,我正在尝试将数据放入使用创建的循环队列中 struct Arrayqueue { int front,rear; int capacity; int *array; }*queue; struct Arrayqueue* create() { int data; struct Arrayqueue* queue=malloc(sizeof(struct Arrayqueue)); printf("\nWrite the capacity of q

我正在尝试将数据放入使用创建的循环队列中

struct Arrayqueue
{
    int front,rear;
    int capacity;
    int *array;
}*queue;

struct Arrayqueue* create()
{
    int data;
    struct Arrayqueue* queue=malloc(sizeof(struct Arrayqueue));
    printf("\nWrite the capacity of queue: ");
    scanf("%d",&data);
    queue->capacity=data;
    queue->front=queue->rear=-1;
    queue->array=malloc( queue->capacity * sizeof(int));
    return(queue);
}
我能够处理create函数。这是我的排队函数

int isFull(){
    if((queue->rear+1)%queue->capacity==queue->front)
    return 1;
    else
    return 0;
}

void enqueue()
{
    int data;
    printf("Enter the data: ");
    scanf("%d",&data);
    if(!isFull()){
    queue->rear=(queue->rear+1)%queue->capacity;
    queue->array[queue->rear]=data;
    if(queue->front==-1)
    queue->front=queue->rear;
    }
    else
    printf("\nQueue is full\n");
}

每当我试图输入一些数据时,我的程序就会崩溃。程序中哪里有问题?

您没有将指向malloced内存的指针分配给全局队列-
struct Arrayqueue*queue=malloc(sizeof(struct Arrayqueue))在此声明并初始化局部变量。因此,当您的场景进入排队时,“队列”全局为空(最有可能是发布整个代码)。