#include<iostream>
#include<fstream.h>
#define ElemType char
typedef struct LNode
{//链表结点结构的定义
ElemType data;
struct LNode *next;
}LNode,*LinkList;
int CreateList(LinkList &head)
{//由文件中的字符串生成单链表
//定义文件输入流,以输入方式打开磁盘文件strfile.txt
ifstream infile("strfile.txt",ios::in|ios::nocreate);
if(!infile)
{
cerr<<"文件打开失败!"<<endl;exit(1);
}
LinkList p=NULL,q=NULL;head=NULL;ElemType ch;
while(infile.get(ch))
{//逐个读入文件strfile.txt中的所有字符,并由每个字符生成链表结点
p=new LNode;
p->data=ch;
if(NULL == head)
head=p;
else
q->next=p;
q=p;//q永远指向尾结点
}
infile.close();//关闭输入文件流
if(NULL != head)
{//尾结点的next域置空
q->next=NULL;
}
return 1;
}
int DisplayList(LinkList head)
{//顺序遍历链表并输出所有结点的数据域值
if(NULL == head)
{
cout<<"当前链表为空!"<<endl;return -1;
}
LinkList p=head;
while(NULL != p)
{
cout<<p->data<<" ";p=p->next;
}
cout<<endl<<endl;
return 1;
}
int main()
{
LinkList head;
CreateList(head);//生成单链表
cout<<"顺序遍历链表并输出所有结点的数据域值:"<<endl;
DisplayList(head);//打印单链表在的所有数据
return 1;
}