C语言 从文件导入信息建立一个链表

从文件导入数据建立一个链表,实现学生信息的增,删,查,取功能
链表的建立分为头插和尾插,头插数据读取顺序与插入顺序相反。尾插读取顺序与插入顺序相同。

具体代码如下:
尾插法:

#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
#include<errno.h>

#define OK 1
#define ERROR 0

typedef struct {
   
   
	char name[8];
	int id;
	int score;
} student;

typedef struct LNode {
   
   
	student date ;
	struct LNode *next;
} LNode, *Linklist;

初始化建立链表


int Openfile ( Linklist L )
{
   
   
    char n[8];
    int t, s;
    Linklist p, newn;
    p = L;   /*尾指针指向头节点*/
    FILE *r;
    if ( ( r = fopen ("as.txt", "r" ) ) == NULL ) {
   
   
		printf("can't open the file!!!\n");
		printf("error:%s\n", strerror(errno));
		exit(0);
    }
    while ( fscanf ( r, "%s%d%d", n, &t, &s ) != EOF ) {
   
   
		newn = ( LNode * ) malloc ( sizeof ( LNode ) );
		strcpy ( newn -> date.name, n );/*字符串初始化后不能直接赋值需要调用strcpy()*/
		newn -> date.id = t;
		newn -> date.score = s;
		newn->next=NULL;    /*新节点指针域置空*/
		p->next=newn;       /*前一个节点指针(即原先的尾指针指向的节点)指向新节点*/
		p=newn;         /*尾指针指向新的节点*/
    }
    fclose(r);
}

打印


void PrintList (Linklist L) {
   
   
    Linklist p;
    p=L;
    printf("姓名\t\t\t\t学号\t\t\t\t成绩\n");
    while ( p->next )/*当循环条件是p时,因为头节点数据
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值