0
void enQ(int* q, int value){
if(q[0] == -1){
q[0] = value;
q[1] = -1;
return;
}
int found = 0;
int last_index;
int count = 0;
while(q[count] != -1){
count++;
}
last_index = count;
int i = 0;
while(q[i] != -1){
if(q[i] < value){
int j = last_index;
while(j != i){
q[j+1]=q[j];
j--;
}
q[i]=value;
found = 1;
break;
}
}
if(found == 0){
q[last_index] = value;
q[last_index+1] = -1;
}
}
int main(int argc, char* argv[])
{
int* q;
q[0] = -1; // initialize queue by making first element of new queue -1...
enQ(q,1);
}
我在C中做了一個簡單的優先級隊列。問題是當我在int *上調用enQ時,程序出現segfaults。我不知道爲什麼。我如何修復段錯誤?當試圖在隊列中優先排隊時出現seg-faulting C
因此,我用\t int * q = malloc(sizeof(int)* 128)取代了int * q,但是當我調用enQ並添加一個項目時,它再次發生段錯誤。我真的不明白爲什麼它仍然在做。 – idungotnosn
我剛剛使用了q [10],這一切都很好。謝謝。 – idungotnosn