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))代码>在此声明并初始化局部变量。因此,当您的场景进入排队时,“队列”全局为空(最有可能是发布整个代码)。