当前位置:首页 » 编程语言 » c语言读取输入的链表
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言读取输入的链表

发布时间: 2022-06-02 11:31:59

⑴ 链表文件读取与写入的c语言程序代码怎么写啊

一边读取链表里面的内容,一边使用write函数写进文件;
一边用read函数读取文件信息,一边保存在链表中。
链表保存信息,必须要结构体,因为要有地址保存下个链表的地址
struct
test
{
char
arry[100];//用于保存信息
struct
test
*
next;//用于保存下个内容信息的指针地址
};
这样就可以把信息链接在一起了。

⑵ C语言链表的读取

把你的主函数和操作步骤贴出来呗

⑶ c语言如何将文件数据读入链表用fread

gsl-1.16\cblas.libs 目录中可以找到如下文件:
libgslcblas.a
libgslcblas.dll.a
libgslcblas-0.dll

⑷ 关于c语言把文件读入链表

把文件读入程序与程序读入链表当两回事来做,
**首先先定义一个节点形式
struct node {
char [20] date;
char [20] time;
char [20] place;
char [20] person;
char[20] event;
struct node* next;
};

**1.把文件输入程序
//先定义一个struct 结构体临时存储文件
struct node *p1 = (struct node *) malloc (sizeof( struct node ));
//然后存入数据
fscanf(events,"%s,%s,%s,%s,%s",p1->date,p1->time,p1->place,p1->person,p1->event);

**2.把这个struct弄到链表当中区
自己可以建一个函数
void struct_connect_linkList( struct node head, struct node *p){
//这边往前面插入的链表;
p->next = head->next;
head = p;
}
然后调用函数就行了 struct_connect_linkList(head, p1); //head就是链表的头

//这里只是其中一种思路,仅供参考

⑸ c语言如何从文件读入,并存放在链表中

//举个单链表的例子,首先定义链表成员的结构体

struct filetext{char buf[BUFSIZE];

struct filetext *next;};

//读取文件,并插入进链表的函数,filename为要读取的文件名,head为链表的头节点,函数返回插入新节点后链表的头节点

struct filetext * readfile(char * filename,struct filetext * head)

{struct filetext * new = (struct filetext *)malloc(sizeof(struct filetext));//定义一个新成员,并给它分配空间

FILE * fp;//读取文件的文件流

struct filetext * p =head;//定义一个p,用来寻找链表中最后一个节点

if((fp=(fopen(filename,"r+")))==NULL)

{//如果打开文件失败,返回head,并提示

printf("open file failure");

return head;}

//然后开始读取文件,放到new的buf中

if(fread(new->buf,BUFSIZE,1,fp)<1)

{//如果读取失败,提示,并返回head

printf("read file failure");

return head;}

fclose(fp);

//文件读取完后,进行链表操作

if(!head)//如果传进来的head是个空指针,那么新指针就作为头节点返回

{new->next = NULL;

return new;}

while(p->next) p = p->next;//把p移动到最后一个节点

p->next = new;//p的下一个节点为new

new->next = NULL;//new的下一个节点为空

return head;

//这样这个函数就完成了,你可以写个主函数,定义一个头节点,试下。

(5)c语言读取输入的链表扩展阅读:

线性表的链式存储表示的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。

因此,为了表示每个数据元素与其直接后继数据元素 之间的逻辑关系,对数据元素 来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。由这两部分信息组成一个"结点"(如概述旁的图所示),表示线性表中一个数据元素。

线性表的链式存储表示,有一个缺点就是要找一个数,必须要从头开始找起,十分麻烦。根据情况,也可以自己设计链表的其它扩展。但是一般不会在边上附加数据,因为链表的点和边基本上是一一对应的(除了第一个或者最后一个节点,但是也不会产生特殊情况)。

不过有一个特例是如果链表支持在链表的一段中把前和后指针反向,反向标记加在边上可能会更方便。

⑹ c语言链表文件读取问题

p0指向链表中最后一个节点,读到文件结尾时,feof返回1,于是执行if语句,此时free(p0),岂不是把链表最后一个节点删掉了,导致链表最后不指向NULL,被free的节点地址已经不能访问,但你却访问了,所以程序会出错。

⑺ C语言中如何将文件中的数据读取到链表中

struct Bookinfo
{
char num[20]; //书号
char name[10]; //书名
int jinjia; //进价
int shoujia; //售价
int shuliang; //库存数量
int shouchu; //售出
};
typedef struct Node_book* pNode_book;
struct Node_book
{
struct Bookinfo bookinfo;
pNode_book next;
};
只存节点的数据域,以二进制文件存放:
int save(struct pNode_book head)
{
if(!head) return 0;
FILE *fp=fopen("info.data","wb");
int i=0;
while(head)
{
fwrite(&head->bookinfo,sizeof(Bookinfo),1,fp);
i++;
head=head->next;
}
fclose(fp);

return i;
}

int readFromFile(struct pNode_book *head)
{
FILE *fp=fopen("info.data","rb");
if(!fp)
{
printf("Can not open the file!\n");
return 0;
}

struct pNode_book pCur=NULL;
fseek(fp,0,SEEK_END);
long end=ftell(fp);
fseek(fp,0,SEEK_SET);
int i=0;
if(ftell(fp)!=end)
{
pNode_book tmpNode=(pNode_book)malloc(sizeof(Node_book));
tmpNode->next=NULL;

fread(&tmpNode->bookinfo,sizeof(Bookinfo),1,fp);
i++;

*head=tmpNode;
pCur=*head;
}
else
{
printf("No record!\n");
return 0;
}

while(ftell(fp)!=end)
{
pNode_book tmpNode=(pNode_book)malloc(sizeof(Node_book));
tmpNode->next=NULL;

fread(&tmpNode->bookinfo,sizeof(Bookinfo),1,fp);
i++;

pCur->next=tmpNode;
pCur=pCur->next;
}

fclose(fp);
return i;
}

//在vc++下编译。如果在TC下,可能还要做些小修改。
//我在记事本上写的,你调试下吧!
//有问题Hi我!

⑻ c语言,从文件中读取单链表并输出。

需求有点不清晰,你要从文件里取什么东西出来?
我改了从txt取每一行的字符串出来,记录在你的链表,你参考一下
#include
"stdafx.h"
#include
"stdlib.h"
int
main()
{
struct
fac
{
//int
data;
char
data[256];
//不知道你要取什么数据,这里用个字符串数组代替
struct
fac
*next;
}*phead;
int
i;
FILE
*fp=fopen("d:\\text.txt","rb");
//一个有内容的txt文本,自己替换
struct
fac
*p;
struct
fac
*ptemp;
phead=(struct
fac*)malloc(sizeof(struct
fac));
phead->next=NULL;
ptemp=phead;
//fread(p,sizeof(struct
fac),1,fp);
while(fgets(
ptemp->data,256,fp
)!=NULL)//改用fgets取一行的数据
{
printf("%s\n",ptemp->data);
p=(struct
fac*)malloc(sizeof(struct
fac));
ptemp->next=p;
ptemp
=
ptemp->next;
}
//后面还应该有个释放链表的操作,这里程序结束会回收,就不写了。
}

⑼ c语言如何将文件的数据读入一个链表中

#include<stdio.h>
#include<stdlib.h>

structdate
{
charstr[3];
structdate*next;
};

//链表长度为len
structdate*create_link(intlen)
{
structdate*head;
structdate*tmp;
inti;
head=malloc(sizeof(structdate));
tmp=head;
for(i=1;i<len;++i)
{
head->next=malloc(sizeof(structdate));
head=head->next;
}
head->next=NULL;
returntmp;
}

//读文件到链表
voidread_file_to_link(structdate*head,FILE*fp)
{
if(head==NULL||fp==NULL)
{
fprintf(stderr,"nullpointer");
exit(EXIT_FAILURE);
}
do
{
fscanf(fp,"%3s",head->str);
head=head->next;
}while(head!=NULL);
}

//显示链表中的内容
voidprint_link(structdate*head)
{
if(head==NULL)
{
fprintf(stderr,"nullpointer");
exit(EXIT_FAILURE);
}
do
{
printf("%s",head->str);
head=head->next;
}while(head!=NULL);
}

intmain()
{
FILE*fp;
intlen;//链表长度
scanf("%d",&len);
fp=fopen("a.txt","r");
structdate*head;
head=create_link(len);
read_file_to_link(head,fp);
print_link(head);

exit(EXIT_SUCCESS);
}