用C语言实现建立一个单链表的过程,并实现打印链表中每一个元素,写出完整程序

用C语言实现建立一个单链表的过程,并实现打印链表中每一个元素,写出完整程序,第1张

这是个很简单的链表创建和输出

#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)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11070802.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存