c語言程式設計中連結串列的儲存問題!!
- 2021-10-23
儲存指標是沒有任何意義的,因為每次程式動態分配記憶體的位置都不一樣,所以儲存了的指標下次也不會指向正確的地方。想要儲存連結串列的話只需要儲存連結串列裡有用的內容把每個連結串列裡有用的東西按順序寫入檔案,讀取的時候重新透過動態分配記憶體來建立新的連結串列,然後讀入對應的內容。不需要知道連結串列的長度,C裡面的輸入函式可以返回成功讀入的內容的長度,如果失敗或者是檔案到了結尾就會返回-1。所以只需要看看每次返回的值。如果不是-1,繼續讀取下一個,否則停止讀取,連結串列終止。
比如:
struct list{
int i;
float f;
char c;
struct list *next;
};
輸出:
struct list *l;
fprintf(fp,“%d %f %c\n”,l->i,l->f,l->c);
輸入:
struct list *l=0,*p;
while(1){
if(l=0){
l=(struct list *)malloc(sizeof(struct list));
l->next=0;
p=l;
}
else{
p->next=(struct list *)malloc(sizeof(struct list));
p=p->next;
p->next=0;
}
int m=fscanf(fp,“%d %f %c”,&(p->i),&(p->f),&(p->c));
if(m==-1) break;
}
用格式化輸出到檔案裡,下次啟功程式時,從檔案讀到連結串列就ok了