1:编写一条学生链表,写一些能够像链表里边添加数据的函数 实现:将链表中的所有内容保存到文件中去 以及 读取文件中的所有内容,加载到链表里面
#include<stdio.h>
#include<stdlib.h>
typedef struct seq
{
union{
int len;
int score;
};
struct seq *next;}seq,*seq_p;
seq_p create_seq_list()
{
seq_p H=(seq_p)malloc(sizeof(seq));
if(H==NULL)
{
printf("NULL");
return NULL;
}
H->next=NULL;
H->len=0;
return H;
}
seq_p creat_list(int score)
{
seq_p new=(seq_p)malloc(sizeof(seq));
if(new==NULL)
{
printf("NULL");
return NULL ;
}
new->score=score;
return new;
}
void insert_head(seq_p H,int score)
{
if(H==NULL)
{
printf("NULL");
return ;
}
seq_p new = creat_list(score);
new->next=H->next;
H->next=new;
H->len++;
return;
}void show_link(seq_p H)
{
if(H==NULL)
{
printf("入参为空,请检查\n");
return;
}
//输出
//先保留第一个结点
seq_p p = H->next;
while(p!=NULL)
{
printf("%d->",p->score);
p = p->next;
}
printf("NULL");
}
int main(int argc, char *argv[])
{
seq_p H=(seq_p)malloc(sizeof(seq));
/* insert_head(H,19);
insert_head(H,18);
insert_head(H,17);
insert_head(H,16);
insert_head(H,15);
insert_head(H,14);
insert_head(H,13);
//show_link(H);
FILE *fp=fopen("test.txt","w");
if (fp==NULL)
{
printf("文件打开失败");
return 1;
}
//将链表的输出写入文件里面;
seq_p p = H->next;
while(p!=NULL)
{
fprintf(fp,"%d\n",p->score);
p = p->next;
}fclose(fp);
*///将文件里面的数据输出到链表里面
FILE*rfp=fopen("test.txt","r");
if(rfp==NULL)
{
printf("文件打开失败");
return -1;
}int a=0;
while(1)
{
int res=fscanf(rfp,"%d",&a);
if(res!=1)
{break;}
insert_head(H,a);}
show_link(H);
fclose(rfp);
return 0;