當前位置:首頁 » 存儲配置 » 鏈表存儲文件

鏈表存儲文件

發布時間: 2022-06-16 08:17:47

A. c語言中怎樣用鏈表保存結構體數據(動態數據結構)

鏈表有多種形式,如:單向鏈表,雙向鏈表,單向循環鏈表,雙向循環鏈表。將鏈表結構定義為list_t,則該類型中一定(至少)存在一個指向下一節點的指針list_t
*next;除了這個指針,list_t
中可以包含其它類型的數據,包括結構體變數。比如:typedef
struct
{
struct
usr_struct
data;
list_t
*next;
}
list_t;

B. 如何將c++將鏈表存儲文件中

首先看你鏈表裡面存的是什麼數據類型,比如是char類型,那麼你就遍歷鏈表,把每個鏈表保存的數據保存到一個char類型變數中,然後把這個char類型變數寫入文件就可以了!
文件的存儲結構是自己設計的,如果要將取出的文件數據放到鏈表中,只需按照當初寫的文件結構讀出來,然後依次存到鏈表中就可以了!

C. C語言鏈表數據存入文件的存儲問題

鏈表存如文本跟列印在窗口方法是一樣的,就是操作函數變變就行。
讀取的話也就是一節一節讀取,可以用插入的方式creat整個鏈表。

D. 關於C語言中,鏈表數據的文件儲存和提取。

當把鏈表已經確定的時候,就可以依次存入文件。

和平時鏈表的遍歷一樣,每讀取一個節點內容就進行一次存入操作。

不過要注意幾個部分的檢查:

  1. 內存空間是否分配成功

  2. 是否成功存入到文件中

  3. 在工作完成之後,是否將以後不會用到的變數清空和刪除。


按照問題要求的代碼如下:

Consumer*read_list()

{

FILE*fp;

if((fp=fopen("CONSUMER.dat","rb"))==NULL)

{

printf("無法讀取CONSUMER.dat ");

returnNULL;

}

intsign;

Consumer*s,*p,*head;


head=(Consumer*)malloc(SIZE_C);

if(head==NULL)

{

printf("讀取失敗!內存空間申請不足! ");

returnNULL;

}

fseek(fp,0,SEEK_END);

if(ftell(fp)==0)

{

returnNULL;

}

p=head;

p->next=NULL;

while(feof(fp))

{

s=(Consumer*)malloc(SIZE_C);

//fread(s,SIZE_C,1,fp);

fread(s,sizeof(char),SIZE_C,fp);

p->next=s;

p=s;

p->next=NULL;

}

fclose(fp);

returnhead;

}//讀取文件到鏈表

intsave_consumer(Consumer*p)

{

FILE*fp;

Consumer*head;

head=p;//p為已經構建好的鏈表

//if((fp=fopen("CONSUMER.dat","ab+"))==NULL)

if((fp=fopen("CONSUMER.dat","wb"))==NULL)

{

printf("無法打開CONSUMER.dat! ");

return-1;

}

while(p!=NULL)

{

//fwrite(p,SIZE_C,1,fp);

fwrite(p,sizeof(char),SIZE_C,fp);

p=p->next;

}

fclose(fp);

return1;

}//儲存鏈表到文件

E. c語言,關於保存鏈表到文件和從文件裝載鏈表(高手請進,急)

拿去用吧~
#include<stdio.h>
#include<malloc.h>
#include<string.h>
structaddress
{
inta;
intb;
charc;
address*next;
};
voidSaveToFile(structaddress*p,FILE*fp)
{
if(p!=NULL)
{
do
{
fwrite(p,sizeof(structaddress),1,fp);
p=p->next;
}
while(p!=NULL);
}
}
intload(FILE*fp,structaddress**head,int&n)//讀取文件數據,建立鏈表
{
structaddress*p1,*p2;
*head=(structaddress*)malloc(sizeof(structaddress));
memset(*head,0,sizeof(structaddress));
if(fread(*head,sizeof(structaddress),1,fp)!=1)
{
free(*head);
*head=NULL;
return(0);
}
p2=*head;
n++;
while(!feof(fp))
{
p1=(structaddress*)malloc(sizeof(structaddress));
fread(p1,sizeof(structaddress),1,fp);
p2->next=p1;
p2=p1;
n++;
}
p2->next=NULL;
return(n);
}
voidmain()
{
structaddress*head;
intn=0;
structaddress*Test[10]={0};
inti=0;
FILE*fp=NULL;
for(;i<10;i++)
{
Test[i]=(structaddress*)malloc(sizeof(structaddress));
if(Test[i]!=NULL)
{
memset(Test[i],0,sizeof(structaddress));
//輸入你的數據(a,b,c)
//如下
Test[i]->a=100+i;//不用則注釋掉
}
}
for(i=0;i<10;i++)
{
if(i<10)
{
Test[i]->next=Test[i+1];//將結構指針連成鏈表
}
}
if((fp=fopen("addrbook","wb"))!=NULL)
{
SaveToFile(Test[0],fp);
fclose(fp);
}
if((fp=fopen("addrbook","rb"))!=NULL)
{
load(fp,&head,n);
}
}

F. 關於C語言中,鏈表的文件儲存方式

思路1是可行的,但思路2大多情況下是不可行的,因為鏈表是動態申請內存空間的,並且地址(理論上是隨機的)不確定,你用數據塊來讀寫,這不就等於原先隨機生產的指針地址都拿過來了?(如果釋放了鏈表的內存,被其它給佔用了該內存點,你的程序大多情況下會漰掉的)

思路2的可行情況:
1.原先申請的內存不能釋放,並且還在一起(當然程序也不可以關閉),保存文件等於沒啥用處
2.在讀取文件後,重置一下指向指針的地址!...

G. c語言中怎麼講鏈表中的數據存到文件中

fwrite
中,每次寫的都是id,應該是fwrite(te,sizeof(ID),1,TEL);
另外結構體中name、tel、style、mail都應該是一個buf,這樣才會將數據寫進去
例如
char
name[32];

H. C語言的鏈表數據如何保存在文件中

可以將鏈表的結構按順序讀出來存放在文件中,在家載的時候讀文件然後重新生成鏈表結構就可以了

I. 如何將該鏈表中的數據以文件形式保存在磁碟上

樓上的思路是正解,你要是喜歡,我還可以教你一點旁門左道的東西。
其實也簡單,就是自定義malloc函數,使得鏈表在分配空間時在一個限定區段內(比如0000~FFFF)進行分配,即你已經知道了鏈表可能存在的最大空間,然後保存時,直接用指針:
fwrite()把整個區段寫進去,然後再記錄根地址即可;
調用時,先把整個區段讀進去,然後把根地址讀出來作為根,這樣整個鏈表一共用兩個指令就完成讀寫操作了。
不要覺得有多無賴可笑,現代操作系統:WINXP
/
VISTA
/
WIN7
/
LINUX
/
OS
X等等,其快速「休眠」功能完全就是上面的解法,就是把內存和寄存器狀態一並寫入磁碟,這個方法非常快,而且不會出錯,但是能把教你數據結構的老師氣得吐血。
有人說這樣產生的文件會很大,大怕什麼,壓縮一下不就行了?反正裡面實際上放置的是一個稀疏矩陣,壓縮後的結果可能比樓上產生的文件更小。

J. 鏈表怎麼儲存到文件

這個不可以。因為指針的指向空間是有malloc分配的。內存隨機。所以即使你把它記錄在了文件中。下次依然讀不出來。因為地方已經變了。如果還有不懂得地方。可以追加。

熱點內容
蘋果微信怎麼清緩存 發布:2024-12-29 17:18:29 瀏覽:271
linux刪除文件目錄 發布:2024-12-29 17:11:20 瀏覽:770
超市系統資料庫設計 發布:2024-12-29 17:11:10 瀏覽:778
電信網路復位後密碼是什麼 發布:2024-12-29 17:01:20 瀏覽:984
網上祭祀源碼 發布:2024-12-29 16:52:23 瀏覽:262
中華五年前文明不斷的密碼是什麼 發布:2024-12-29 16:51:40 瀏覽:952
androideclipse關聯源碼 發布:2024-12-29 16:49:59 瀏覽:950
微信版本過低怎麼升級安卓版 發布:2024-12-29 16:47:45 瀏覽:769
資料庫故障恢復 發布:2024-12-29 16:42:35 瀏覽:537
雲存儲移動硬碟 發布:2024-12-29 16:36:13 瀏覽:982