2012-12-02 111 views
0

由於某些原因,無論何時我訪問我表中的任何數據,內容將被替換爲null。該表是一個鏈接列表數組。遍歷後表被刪除

void print(struct foo ** bar) { 
    struct foo ** helper = bar; 
    for (i = 0; i < size; i++) { 
     printf("%d: ", i); 
     while (helper[i] != NULL) { 
      printf("%s ", helper[i]->data); 
      helper[i] = helper[i]->next; 
     } 
     printf("\n"); 
    } 
    printf("\n"); 
} 

沒有,我嘗試工作。表格打印一次,然後第二次返回null

+2

輔助函數[i] =幫手[I] - >下一步;'自毀/修改表同時打印。 – wildplasser

+0

@wildplasser我應該用什麼來代替? –

+0

一個臨時變量,也許? –

回答

2

嗯,你修改與

helper[i] = helper[i]->next; 

最終將其設置爲NULL您的陣列。 所以,你的問題並不奇怪。

如果您通過哈希表要循環,嘗試

struct foo *helper; 
for (i = 0; i < tablesize; i++) { 
    printf("%d: ", i); 
    for (helper = bar[i]; helper != NULL; helper = helper->next) 
     printf("%s ", helper->data); 

    printf("\n"); 
} 
+0

這樣做,謝謝! –

1
void print(struct foo ** bar) { 

    int i; 
    struct foo *ptr ; 

    for (i = 0; i < tablesize; i++) { 
     if (!bar[i]) continue; 
     printf("%d: ", i); 

     for (ptr=bar[i] ; ptr ; ptr = ptr->next) { 
      printf("%s ", ptr->data); 
     } 

     printf("\n"); 
    } 
    printf("\n"); 
}