我必须为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。