当数组在C中是struct类型时,如何检查条目数组的第一个条目是否为空?
How to check if the first entry of an array of entries is empty when the array is of type struct in C?
我必须为 Uni 编写一个程序,其中应该有一个具有优先级的队列,并且在队列中应该有一个条目数组,每个条目需要 31 个字符。还需要有一个函数来检查队列是空的还是满的。我已经编写了这段代码,但它不起作用,我收到错误 invalid oprands to binary == (have entry and '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,然后再添加。
我必须为 Uni 编写一个程序,其中应该有一个具有优先级的队列,并且在队列中应该有一个条目数组,每个条目需要 31 个字符。还需要有一个函数来检查队列是空的还是满的。我已经编写了这段代码,但它不起作用,我收到错误 invalid oprands to binary == (have entry and '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,然后再添加。