这是个很简单的链表创建和输出
#include<stdio.h>
#include<stdlib.h>
typedef struct linkednode
{
char data
struct linkednode *next
}node,*link_list//链表节点的结构及重命名
link_list creat()//创建一个链表返回类型是链表的首地址
{
link_list L
node *p1,*p2
char data
L=(node*)malloc(sizeof(node))//开辟存储空间
p2=L
while((data=getchar())!='\n')//输入回车键时结束输入
{
p1=(node*)malloc(sizeof(node))
p1->data=data
p2->next=p1
p2=p1
}
p2->next=NULL
return L
}
void print(link_list L)//把链表输出
{
node *p
p=L->next
while(p!=NULL)
{
printf("%c",p->data)
p=p->next
}
printf("\n")
}
void main()
{
link_list L=NULL
char x
printf("请输入链表节点:\n")
L=creat()
print(L)
}
//函数种类/* void dakai(int n,int j,char ch)
void save(int n,char ch)
void display(int n,char ch)//显示信息
void xiugai()
void dakai(int n,int j,char ch)//查找文件
void shuru(int n,char ch)//输入信息
void paixu(int n,char ch)
void xuanzhe(int n,char ch)//选择运行程序*/
//-------------------------------------------------------------------------------
struct student_type//定义结构体
{
char name[10]
int num
int age
char addr[15]
}stud[SIZE]
//-----------------------------------------------------------------------------------------
void save(int n,char ch)//保存输入信息
{
FILE *fp
int i
if((fp=fopen("f:\\stu_list.txt","wb+"))==NULL)
{
printf("cannot open file\n")
exit(0)
}
for(i=0i<ni++)
if(fwrite(&stud[i],sizeof(student_type),1,fp)!=1)
printf("file write error\n")
fclose(fp)
}
//------------------------------------------------------------------------------------------
void display(int n,char ch)//显示信息
{
FILE *fp
int i
if((fp=fopen("f:\\stu_list.txt","rb"))==NULL)
{
printf("cannot open file\n")
exit(0)
}
for(i=0i<ni++)
{
fread(&stud[i],sizeof(struct student_type),1,fp)
printf("姓名:%-10s学号:%4d年龄:%4d地址:%-15s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr)
}
fclose(fp)
}
//--------------------------------------------------------------------------------------------
void xiugai(int n,char ch)//修改学生信息
{
int z
FILE *pf
pf=fopen("f:\\stu_list.txt","rb+")
if(pf==NULL)
{
printf("\n pf open Error,\n exit program.")
return
}
else
{
//输入学生信息
cout<<"请输入你要修改的学号:"<<endl
cin>>z
fseek(pf,z*sizeof(struct student_type),2)
scanf("%s%d%d%s",stud[z].name,&stud[z].num,&stud[z].age,stud[z].addr)
fseek(pf,sizeof(struct student_type),0)
fwrite(&stud,sizeof(struct student_type),1,pf)
}
fclose(pf)
//save(n,ch)
//display(n,ch)
}
//-----------------------------------------------------------------------------------------------
/* struct stud
{
int num
struct studt
} *head
void printnode(stud
{
while(p->next!=NULL)
{
//输出p指向的数据
cout<<p->num<<" "
p=p->next//指向下一个
}
cout<<p->num<<endl
}
//---------------------------------------------------------------------------------------------
void dakai2()
{
node *p=new node
head=p//设置头指针
p->num=90
for(int k=1k<10k++)
{
//产生下一个结点1
p->next=p+k
p=p->next
p->num=k*100
}
p->next=NULL
printnode(head)
}*/
//------------------------------------------------------------------------------------------------
void dakai(int n,int j,char ch)//查找文件
{
//int i=2
//char ch1,filename[20]
FILE *fp
//int i=0
//display(n,ch)
//cout<<"请输入所要查找的文件名,以'#'结束输入"<<endl
//scanf("%s",filename)
cout<<"---------------------------------------------------------------------------"<<endl
if ((fp=fopen("f:\\stu_list.txt","rb"))==NULL)
{
printf("cannot open this file\n")
exit(0)
}
for(int i=0i<4i+=1)
{
fseek(fp,i*sizeof(struct student_type),2)
fread(&stud[i],sizeof(struct student_type),1,fp)
if(stud[i].num==j)
//{
printf("姓名:%-10s学号:%4d年龄:%4d地址:%-15s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr)
}
//i++
//}
// }
/*fread(&stud[i-1],sizeof(struct student_type),i,fp)
cout<<"姓名"
printf("%-10s",stud[i-1].name)
cout<<"学号"
printf("%4d",stud[i-1].num)
cout<<"年龄"
printf("%4d",stud[i-1].age)
cout<<"地址"
printf("%-15s\n",stud[i-1].addr)
// }
/*
while((ch=getchar())!='#')
{
fputc(ch,fp)
putchar(ch)
}*/
fclose(fp)
}
//----------------------------------------------------------------------------------------------------------
void shuru(int n,char ch)//输入信息
{
int i
cout<<"现在请输入学生个数:"
cin>>n
cout<<"现在请输入"<<n<<"个学生的信息:"<<endl
for(i=0i<ni++)
{
cout<<"请输入第"<<i+1<<"个学生的姓名,学号,年龄,地址:"<<endl
scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr)
}
save(n,ch)
display(n,ch)
}
//----------------------------------------------------------------------------------------------------------
void paixu(int n,char ch)
{
fstream outfile,infile
infile.open("f:\\stu_list.txt",ios::in)
if(!infile)
{
cerr<<"文件打开失败!"<<endl
exit(0)
}
student_type textline[80]
// int i=0
// while(!infile.eof())
// {
// i++
// infile.getline(textline,sizeof(textline))
// if
//cout<<i<<":"<<textline<<endl
}
infile.close()
}
//-------------------------------------------------------------------------------------------------------
/* void paixu2()
{
student_type ww
for(int i=0i<ni++)
{
for(int j=i+1j<nj++)
{
if(stud[i].num>stu[j].num)
{
ww.num=stud[i].num
stud[i].num=stud[j].num
stud[j].num=ww.num
ww.
*/
//-----------------------------------------------------------------------------------------------------------
void xuanzhe(int n,char ch)//选择运行程序
{
int i,j
if(ch=='s')//输入
{
shuru(n,ch)
cout<<"---------------------------------------------------------------------"<<endl
cout<<" 请输入命令"<<endl<<endl
cout<<"s(输入信息)、f(查找信息)、d(删除)、p(排序)、a(存储信息)按其他键退出"<<endl
cin>>ch
xuanzhe(n,ch)
}
else if(ch=='f')//查找
{
cout<<"请输入要查找的编号:"<<endl
cin>>j
dakai(n,j,ch)
cout<<"---------------------------------------------------------------------"<<endl
cout<<" 请输入命令"<<endl<<endl
cout<<"s(输入信息)、f(查找信息)、d(删除)、p(排序)、a(存储信息)按其他键退出"<<endl
cin>>ch
xuanzhe(n,ch)
}
else if(ch=='a')//保存
{
save(n,ch)
cout<<"---------------------------------------------------------------------"<<endl
cout<<" 请输入命令"<<endl<<endl
cout<<"s(输入信息)、f(查找信息)、d(删除)、p(排序)、a(存储信息)按其他键退出"<<endl
cin>>ch
xuanzhe(n,ch)
}
else if(ch=='p')
{
paixu(n,ch)
cout<<"---------------------------------------------------------------------"<<endl
cout<<" 请输入命令"<<endl<<endl
cout<<"s(输入信息)、f(查找信息)、d(删除)、p(排序)、a(存储信息)按其他键退出"<<endl
cin>>ch
xuanzhe(n,ch)
}
else if(ch=='x')//修改
{
xiugai(n,ch)
cout<<"------------------------------------------------------------------------"<<endl
cout<<"s(输入信息)、f(查找信息)、d(删除)、p(排序)、a(存储信息)按其他键退出"<<endl
cin>>ch
xuanzhe(n,ch)
}
else if(ch=='d')
{
display(n,ch)//显示信息
cout<<"------------------------------------------------------------------------"<<endl
cout<<"s(输入信息)、f(查找信息)、d(删除)、p(排序)、a(存储信息)按其他键退出"<<endl
cin>>ch
xuanzhe(n,ch)
}
else
{
cout<<"命令错误!"<<endl
}
}
//--------------------------------------------------------------------------------------------------
void main()//主函数
{
int n
char ch
cout<<"---------------------------------------------------------------------"<<endl
cout<<" 请输入命令"<<endl
cout<<"s(输入信息)、f(查找信息)、d(删除)、p(排序)、a(存储信息)按其他键退出"<<endl
cin>>ch
xuanzhe(n,ch)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)