我正在构建一个优先级队列,但不是用整数填充 PQ 数组,而是分配一个指向结构的指针。下面是 PQ 的两个结构的代码,初始化器和插入函数:
typedef struct HeapStruct *PriorityQueue;
typedef struct Customer *CustomerP;
struct HeapStruct {
int Capacity;
int Size;
int *Elements;
};
struct Customer {
float arrivalT;
float waitT;
float departureT;
float currentT;
CustomerP *siblingR; //Used for linked list
};
PriorityQueue Initialize() {
PriorityQueue H = (PriorityQueue) malloc(sizeof (struct HeapStruct));
CustomerP sentinal = malloc(sizeof (struct Customer));
sentinal->currentT = MinData;
H->Capacity = 101;
H->Size = 0;
H->Elements[0] = &sentinal; //Syntax Error
return H;
}
void Insert(CustomerP X, PriorityQueue H) {
int i;
if (IsFull(H)) {
printf("Priority queue is full");
return;
}
//Syntax errors
for (i = ++H->Size; H->Elements[i/2]->currentT > X->currentT; i /= 2)
H->Elements[i] = H->Elements[i/2];
H->Elements[i] = X;
}
所以我试图在 Int 数组中放置一个指针并进行比较,例如 H->Elements[i]->currentT,但我不知道如何处理指向数组中结构的指针并从那里。
任何人都可以帮我解决这个问题吗?如果需要,我很乐意提供更多信息。