欢迎来到天天文库
浏览记录
ID:14807266
大小:42.00 KB
页数:11页
时间:2018-07-30
《动态单链表(含文件操作)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、动态单链表(含文件操作)//动态单链表(含文件操作)ywmp28link.cpp#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineNULL0#include//含exit()#include//含FILE#include#include#includetypedefstruct{charsno[6];//学号charname[9];//姓名floatsco
2、re[5];//语文数学英语综合总分}st;typedefintstatus;typedefstElemType;//-----线性表的单链表存储结构-----typedefstructLNode{ElemTypedata;//数据域datastructLNode*next;//指针域next}LNode,*LinkList;voidoutLNode(ElemTypee){//显示一个给定的结点einti;cout<3、etiosflags(ios::left)<>e.sno;cout<<"姓名:";cin>>e.name;cout<<"语文数学英语综合:";e.score[4]=0;for(inti=0;i<=3;i++){cin>>e.score[i]4、;e.score[4]+=e.score[i];}}statusCreatList(LinkList&L){//头插法(逆位序)建立带表头结点的单链线性表LLinkListp;FILE*fp;charfilename[23]="c:\cfiles\",fn1[10];cout<<"请输入文件名:";cin>>fn1;strcat(filename,fn1);if((fp=fopen(filename,"rb"))==NULL)//打开二进制文件准备读{cout<<"cannotopenfile."<5、eturnERROR;}L=newLNode;//生成头结点L->next=NULL;//先建立一个带头结点的单链表p=newLNode;//分配第一个新结点if(fread(&p->data,sizeof(ElemType),1,fp)!=1)//从文件中读数赋给{cout<<"Filereaderror.";returnNULL;}//链表结点p的数据域while(!feof(fp)){p->next=L->next;L->next=p;//插入到表头p=newLNode;//生成新结点fread(&p->d6、ata,sizeof(ElemType),1,fp);//输入元素值}fclose(fp);returnOK;}statuscreateLink(LinkList&L){//从任意二进制文件中读数据尾插法建立带头结点的单链表LLinkListp,r;FILE*fp;charfilename[23]="c:\cfiles\",fn1[10];cout<<"请输入文件名:";cin>>fn1;strcat(filename,fn1);if((fp=fopen(filename,"rb"))==NULL)//打开二进制7、文件准备读{cout<<"cannotopenfile."<data,sizeof(ElemType),1,fp)!=1)//从文件中读数赋给{cout<<"Filereaderror.";returnNULL;}//链表结点p的数据域while(!feof(fp)){r->next=p;//新结点p链入表尾r=p;//表尾指针r后移p=newLNode;//分配下一个8、新结点fread(&p->data,sizeof(ElemType),1,fp);}r->next=NULL;//最后结点指针域为空fclose(fp);returnOK;}statusinsertSortCreateLink(LinkList&L)//排序{//从任意二进制文件中读数据插入排(升)序建立带头结点的单链表LLinkListp,q
3、etiosflags(ios::left)<>e.sno;cout<<"姓名:";cin>>e.name;cout<<"语文数学英语综合:";e.score[4]=0;for(inti=0;i<=3;i++){cin>>e.score[i]
4、;e.score[4]+=e.score[i];}}statusCreatList(LinkList&L){//头插法(逆位序)建立带表头结点的单链线性表LLinkListp;FILE*fp;charfilename[23]="c:\cfiles\",fn1[10];cout<<"请输入文件名:";cin>>fn1;strcat(filename,fn1);if((fp=fopen(filename,"rb"))==NULL)//打开二进制文件准备读{cout<<"cannotopenfile."<5、eturnERROR;}L=newLNode;//生成头结点L->next=NULL;//先建立一个带头结点的单链表p=newLNode;//分配第一个新结点if(fread(&p->data,sizeof(ElemType),1,fp)!=1)//从文件中读数赋给{cout<<"Filereaderror.";returnNULL;}//链表结点p的数据域while(!feof(fp)){p->next=L->next;L->next=p;//插入到表头p=newLNode;//生成新结点fread(&p->d6、ata,sizeof(ElemType),1,fp);//输入元素值}fclose(fp);returnOK;}statuscreateLink(LinkList&L){//从任意二进制文件中读数据尾插法建立带头结点的单链表LLinkListp,r;FILE*fp;charfilename[23]="c:\cfiles\",fn1[10];cout<<"请输入文件名:";cin>>fn1;strcat(filename,fn1);if((fp=fopen(filename,"rb"))==NULL)//打开二进制7、文件准备读{cout<<"cannotopenfile."<data,sizeof(ElemType),1,fp)!=1)//从文件中读数赋给{cout<<"Filereaderror.";returnNULL;}//链表结点p的数据域while(!feof(fp)){r->next=p;//新结点p链入表尾r=p;//表尾指针r后移p=newLNode;//分配下一个8、新结点fread(&p->data,sizeof(ElemType),1,fp);}r->next=NULL;//最后结点指针域为空fclose(fp);returnOK;}statusinsertSortCreateLink(LinkList&L)//排序{//从任意二进制文件中读数据插入排(升)序建立带头结点的单链表LLinkListp,q
5、eturnERROR;}L=newLNode;//生成头结点L->next=NULL;//先建立一个带头结点的单链表p=newLNode;//分配第一个新结点if(fread(&p->data,sizeof(ElemType),1,fp)!=1)//从文件中读数赋给{cout<<"Filereaderror.";returnNULL;}//链表结点p的数据域while(!feof(fp)){p->next=L->next;L->next=p;//插入到表头p=newLNode;//生成新结点fread(&p->d
6、ata,sizeof(ElemType),1,fp);//输入元素值}fclose(fp);returnOK;}statuscreateLink(LinkList&L){//从任意二进制文件中读数据尾插法建立带头结点的单链表LLinkListp,r;FILE*fp;charfilename[23]="c:\cfiles\",fn1[10];cout<<"请输入文件名:";cin>>fn1;strcat(filename,fn1);if((fp=fopen(filename,"rb"))==NULL)//打开二进制
7、文件准备读{cout<<"cannotopenfile."<data,sizeof(ElemType),1,fp)!=1)//从文件中读数赋给{cout<<"Filereaderror.";returnNULL;}//链表结点p的数据域while(!feof(fp)){r->next=p;//新结点p链入表尾r=p;//表尾指针r后移p=newLNode;//分配下一个
8、新结点fread(&p->data,sizeof(ElemType),1,fp);}r->next=NULL;//最后结点指针域为空fclose(fp);returnOK;}statusinsertSortCreateLink(LinkList&L)//排序{//从任意二进制文件中读数据插入排(升)序建立带头结点的单链表LLinkListp,q
此文档下载收益归作者所有