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