我必須為 Uni 撰寫一個程式,其中應該有一個具有優先級的佇列,并且在佇列中應該有一個條目陣列,其中每個條目需要是 31 個字符。還需要有一個函式來檢查佇列是空的還是滿的。我已經撰寫了這段代碼,但它不起作用,我收到錯誤無效運算元到二進制 ==(有條目和“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:我還必須稍后撰寫一個函式,其中第一個條目被列印和洗掉,而所有其他條目在佇列中“向上”移動 1,我不知道如何實作它。如果有人有想法,非常感謝!!
uj5u.com熱心網友回復:
pqueue是函式中的一個指標isEmpty,它指向一個條目陣列。您正在訪問陣列條目,當您寫入時,pqueue->entries[0]您正在訪問 type 的元素entry,但這不是檢查它是否為NULL! 你應該做的是創建一個變數,在結構pqueue中說 next告訴你下一個空點在哪里,給它一個初始值-1,你將檢查它是否-1,然后你的佇列是空的,等等,添加時在添加之前,元素將其加 1。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/357395.html
上一篇:意外的“如果”(T_IF)
