当数组为C中的struct类型时,如何检查条目数组的第一个条目是否为空



我必须为Uni编写一个程序,其中应该有一个具有优先级的队列,并且该队列中应该有一组条目,每个条目需要有31个字符。此外,还需要一个函数来检查队列是空的还是满的。我已经写了这个代码,但它不起作用,我得到了错误无效的oprands到binary==(有entry和'int'(:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
enum priority {
H, h, n, l, L      //Priority enum Highest = 0 Lowest = 4
};
typedef struct entry{
enum priority priorityvar;
char message[31];
} entry;
typedef struct pqueue {
entry entries[10];
} pqueue;
int isEmpty(pqueue* pqueue){
if (pqueue->entries[0] == 0)
return 1;
else
return 0;
}
int isFull(pqueue* pqueue){
if (pqueue->entries[9] != 0)
return 1;
else
return 0;
}

我也试着用NULL替换0,但也没用,如果有任何帮助,我将不胜感激!非常感谢!!

Ps:我还必须稍后编写一个函数,其中打印并删除第一个条目,而所有其他etries移动1〃;向上";在队列中,我不知道如何实现。如果有人有想法,非常感谢!!

pqueue是函数isEmpty中的一个指针,它指向一个条目数组。您正在访问数组条目,当您写入pqueue->entries[0]时,您正在访问类型为entry的元素,但这不是用于检查它是否为NULL的指针!您应该做的是创建一个变量,比如结构pqueue中的next,它告诉您下一个空点在哪里,给它一个初始值-1,然后您将检查它的-1是否为空,然后您的队列为空,以此类推,当添加元素时,在添加之前将其递增1。

最新更新