1.编写链表,链表里面随便搞点数据
使用 fprintf 将链表中所有的数据,保存到文件中
使用 fscanf 读取文件中的数据,写入链表中
//main.c
#include "link_list.h"
int main()
{
link_p L=create_head();
insert_tail(L,12);
insert_tail(L,89);
insert_tail(L,55);
insert_tail(L,67);
insert_tail(L,32);
out_put(L);
FILE* fp1=fopen("./num","w");
if(fp1==NULL){return -1;}
int arr[10]={0};
link_p p=L->next;
for(int i=0;p!=NULL;i++,p=p->next)
{
arr[i]=p->data;
fprintf(fp1,"%d\t",arr[i]);
}
fclose(fp1);
FILE* fp2=fopen("./num","r");
if(fp2==NULL){return -1;}
int brr[10]={0};
for(int j=0;j<5;j++)
{
fscanf(fp2,"%d",&brr[j]);
insert_tail(L,brr[j]);
}
out_put(L);
fclose(fp2);
return 0;
}
//link_list.c
#include "link_list.h"
link_p create_head()
{
link_p L=(link_p)malloc(sizeof(link_list));
if(L==NULL)
{
printf("空间申请失败\n");
return NULL;
}
L->data=0;
L->next=NULL;
return L;
}
link_p create_new(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_tail(link_p L,datatype data)
{
if(L==NULL)
{
printf("入参为空\n");
return;
}
link_p p=L;
while(p->next!=NULL)
{
p=p->next;
}
link_p new=create_new(data);
new->next=p->next;
p->next=new;
L->len++;
}
void out_put(link_p L)
{
if(L==NULL)
{
printf("入参为空\n");
return;
}
link_p p=L->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
putchar(10);
}
//link_list.h
#ifndef __LINK_LIST_H__
#define __LINK_LIST_H__
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.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 create_new(datatype data);
void insert_tail(link_p L,datatype data);
void out_put(link_p L);
#endif