当前位置:首页 » 存储配置 » 链表存储文件

链表存储文件

发布时间: 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分配的。内存随机。所以即使你把它记录在了文件中。下次依然读不出来。因为地方已经变了。如果还有不懂得地方。可以追加。

热点内容
uu跑腿跑男端抢单脚本靠谱不 发布:2025-01-01 11:28:33 浏览:344
pythonreshape1 发布:2025-01-01 11:24:18 浏览:360
编程转正表 发布:2025-01-01 11:24:10 浏览:188
创客编程需要什么配置电脑 发布:2025-01-01 11:22:44 浏览:498
打不开我的电脑显示服务器运行失败 发布:2025-01-01 11:16:35 浏览:343
江苏南京百旺服务器地址 发布:2025-01-01 11:16:27 浏览:573
H3C云平台服务器 发布:2025-01-01 11:16:25 浏览:398
服务器单网口配置ip 发布:2025-01-01 11:15:07 浏览:820
局域网dhcp服务器怎么找 发布:2025-01-01 11:14:12 浏览:449
java模拟http 发布:2025-01-01 11:11:17 浏览:587