1.用fprintf将链表数据保存到文件中
2用fscanf将文件中数据写入链表
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
typedef int datatype;
typedef struct link_list
{
union
{
int len;
datatype data;
};
struct link_list *next;
}link_list,*link_p;
link_p create_head()
{
link_p L = (link_p)malloc(sizeof(link_list));
if(L==NULL)
{
printf("空间申请失败\n");
return NULL;
}
L->len=0;
L->next=NULL;
return L;
}
//创建结点
link_p create_node(datatype data)
{
link_p new = (link_p)malloc(sizeof(link_list));
if(new==NULL)
{
printf("空间申请失败\n");
return NULL;
}
new->data = data;
return new;
}
//头插
void insert_head(link_p H,datatype data)
{
if(H==NULL)
{
printf("入参为空,请检查\n");
return;
}
link_p new = create_node(data);
new->next = H->next;
H->next = new;
H->len++;
}
void out_put_link(link_p H)
{
if(H==NULL)
{
printf("入参为空,请检查\n");
return;
}
link_p p = H->next;
while(p!=NULL)
{
printf("%d->",p->data);
p = p->next;
}
printf("NULL\n");
void save(char *filename)
{
FILE *w=fopen(filename,"w");
if (w == NULL)
{
return 1;
}
link_p p=H->next;
for (int i = 0; i <H->len; i++)
{
fprintf(w,"%d",p->data);
p=p->next;
}
fclose(w);
}void show(char *filename)/*输出文件*/
{
FILE *fp=fopen(filename,"r");
link_list arr[100];
if (fp== NULL)
{
return 1;
}
for (int i = 0; i <H->len; i++)
{
fscanf(fp,"%d",&(arr[i].data));
printf("%d\n", arr[i].data);
}
fclose(fp);
}
int main(int argc, char *argv[])
{
link_p H=create_head();
insert_head(H,1);
insert_head(H,3);
insert_head(H,5);
insert_head(H,7);
insert_head(H,9);
out_put_link(H);
save(filename);
free(p);
show(filename);
return 0;
}