我已經編寫了一個基於小c圖的實現的代碼,並相應地列出了圖的頂點的鄰接列表。我給上面的代碼是:c顯示圖的鄰接列表
#include<stdio.h>
#include<stdlib.h>
struct node {
int info;
struct node* next;
}* z, *adjv[50], *t;
void insert() {
int j, v, e, c, d, i;
z = (struct node*)malloc(sizeof(struct node));
z->next = z;
scanf("%d%d", &v, &e);
for (j = 1; j <= v; j++) {
adjv[j] = z;
}
for (j = 1; j <= e; j++) {
scanf("%d%d", &c, &d);
t = (struct node*)malloc(sizeof(struct node));
t->info = c;
t->next = adjv[d];
adjv[d] = t;
t = (struct node*)malloc(sizeof(struct node));
t->info = d;
t->next = adjv[c];
adjv[c] = t;
}
for (i = 1; i <= e; i++) {
while (adjv[i] != z) {
printf("%d", adjv[i]->info);
adjv[i] = adjv[i]->next;
}
}
}
int main() {
insert();
return 0;
}
當我爲它提供頂點= 4的邊緣= 2和邊緣爲(1,2)(3,4)它不顯示這是斷開的圖作爲鄰接列表僅顯示1和2的值。請幫助我解決此問題,以便可以顯示正確的鄰接列表
請不要用逗號,謝謝之類的句子,因爲它只是讓人們必須閱讀更多(沒有有價值的內容)。也使用正確的代碼縮進。 – hoijui
C中的數組索引從0開始。您始終使用基於1的索引,並且您的數組應該足夠大,但如果使用C編程,請使用C符號。也沒有必要創建一個虛擬哨兵節點; 'NULL'指針被設計用來扮演這個角色。 –
是的,但代碼適用於連接組件,例如當v = 3時e = 2(1,2)(2,3) – soul