c-基于LinkedList的队列,在创建新队列时不能返回空指针



我正试图在C中的LinkedList上创建一个Queue。并且我有一个问题,当我尝试初始化队列并返回QueueNode=NULL时;它仍然会给我一个内存地址,当尝试检查Queue是否为空时,结果总是不是。如果我让队列指针在main中为NULL,那就是工作(指针等于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;
}

main:


{
QueueNode* q = createQueue;
int res = isEmptyQueue(q);
printf("%dn", res);
return 0;
}

来自调试模式的图片在此处输入图像描述

至少这些问题:

分配.next的尝试不正确

我正试图在C中的LinkedList上创建一个队列。当我试图初始化队列并返回QueueNode = NULL;时,我遇到了一个问题

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

QueueNode* Q = NULL;
// Q->next = NULL;
return Q;

警告未全部启用

CCD_ 8尝试将函数的地址分配给CCD_ 9指针。相反,调用函数。启用了良好警告的编译器会对此发出警告。

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

相关内容

  • 没有找到相关文章

最新更新