c中循环队列函数中的SIGSEV错误



嘿,伙计们,我一直在尝试为我的项目创建循环队列库。但是,当我在空函数下从if语句开发SIGEGV错误时,每当我在特定的if条件下使用条件时,我都会遇到这个错误。

#include <stdio.h>
#define SIZE 5
typedef struct queue
{
int values[SIZE];
int head;
int tail;
int size;
int count;
int full_flag;
}queue_t;
int init(queue_t* q)
{
//q->values;
q->head=-1;
q->tail=-1;
q->size=SIZE;
q->count=1;
q->full_flag=0;
}
int empty(queue_t* q) //This if statement where i am getting problem at 
{
if(q->count==0)
{
return 1;
}
else
{
return 0;   
}
}
int enqueue(queue_t* q,int input)
{
if(empty(q)==1)
{
printf("Queue is fulln");
}
else
{
if(q->head=-1)
{
q->head=0;
}
q->tail=(q->tail+1)%q->size;
q->values[q->tail]=input;
q->count++;
}
}
int deque(queue_t* q)
{
int result;
q->head=q->head%q->size;
result=q->values[q->head];
q->head++;
printf("Removing from %dn",result);
q->count--;
}
int main(void) {
queue_t* q;
//q->head=5;
// q->values[2]=3;
init(q);
enqueue(q,2);
enqueue(q,3);
enqueue(q,4);
enqueue(q,5);
enqueue(q,6);

//printf("%dn",q->values[q->tail]);
//printf("%d",q->head);
// your code goes here
return 0;
}

当我在没有if循环的情况下执行时,一切都很好。一切都变得一团糟。请大家帮我,提前谢谢

您在主函数中定义了一个指针,但没有为其分配内存

queue_t* q;

这是一个野生(悬空(指针,因为它不指向特定的内存。你必须为它分配内存。像这样:

queue_t* q = malloc(sizeof(queue_t));

queue_t q;
queue_t* pq = &q;

最新更新