C 基于LinkedList的队列,创建新队列时无法返回空指针

C 基于LinkedList的队列,创建新队列时无法返回空指针,c,linked-list,queue,C,Linked List,Queue,我正在尝试在C中的LinkedList上创建一个队列。 我有一个问题,当我试图初始化队列并返回QueueNode=NULL时; 它仍然会给我一个内存地址,当a试图检查队列是否为空时,结果总是为空。 如果我让main中的Queue pointer=NULL是work(指针等于NULL)。 附上我的密码 QueueNode标头: typedef struct node { queueInfo value; struct node* next; }QueueNode; Queue

我正在尝试在C中的LinkedList上创建一个队列。 我有一个问题,当我试图初始化队列并返回QueueNode=NULL时; 它仍然会给我一个内存地址,当a试图检查队列是否为空时,结果总是为空。 如果我让main中的Queue pointer=NULL是work(指针等于NULL)。 附上我的密码

QueueNode标头:


typedef struct node
{
    queueInfo value;
    struct node* next;
}QueueNode;


QueueNode* createQueue();
int isEmptyQueue(QueueNode* Q);
void insert(QueueNode** Q, queueInfo x);
void delafter(QueueNode* p, queueInfo* x);
void PrintQueue(QueueNode* Q);
QueueNode.c

#include <stdio.h>
#include <stdlib.h>



QueueNode* createQueue()
{
    /*
    Aim:     Initiolaze new Queue;
    input:   nothing
    outpot:  returns QueueNode pointer 
    */
    QueueNode* Q = NULL;
    Q->next = NULL;
    return Q;
}

int isEmptyQueue(QueueNode* Q)
{
    /*
    Aim:     check if the Queue is empty
    input:   pointer to an queue
    outpot:  returns 1 if the queue is empty, 0 if not
    */
    if ((!Q))
    {
        return 1;
    }
    return 0;
}

调试模式下的图片
至少这些问题:

分配
的尝试不正确。下一步

我正在尝试在C中的LinkedList上创建一个队列。当我尝试初始化队列并返回
QueueNode=NULL

NULL
分配给
Q
是可以的,但是
Q->next=NULL是未定义的行为(UB),因为
Q
没有指向太多有效的内存。不要尝试
Q->next=NULL
,因为不需要它

QueueNode* Q = NULL;
// Q->next = NULL;
return Q;
警告未全部启用

QueueNode*q=createQueue
尝试将函数的地址分配给
QueueNode
指针。相反,调用函数。启用良好警告功能的编译器将对此发出警告

// QueueNode* q = createQueue;
QueueNode* q = createQueue();

至少这些问题:

分配
的尝试不正确。下一步

我正在尝试在C中的LinkedList上创建一个队列。当我尝试初始化队列并返回
QueueNode=NULL

NULL
分配给
Q
是可以的,但是
Q->next=NULL是未定义的行为(UB),因为
Q
没有指向太多有效的内存。不要尝试
Q->next=NULL
,因为不需要它

QueueNode* Q = NULL;
// Q->next = NULL;
return Q;
警告未全部启用

QueueNode*q=createQueue
尝试将函数的地址分配给
QueueNode
指针。相反,调用函数。启用良好警告功能的编译器将对此发出警告

// QueueNode* q = createQueue;
QueueNode* q = createQueue();

OT:
Q->next=NULL取消对空指针的引用会导致未定义的行为。在
createQueue
中,请尝试:
QueueNode*Q=malloc(sizeof(*Q))加班:
Q->next=NULL取消对空指针的引用会导致未定义的行为。在
createQueue
中,请尝试:
QueueNode*Q=malloc(sizeof(*Q))