实验4 链表综合.docx

上传人:b****8 文档编号:28435280 上传时间:2023-07-13 格式:DOCX 页数:16 大小:174.72KB
下载 相关 举报
实验4 链表综合.docx_第1页
第1页 / 共16页
实验4 链表综合.docx_第2页
第2页 / 共16页
实验4 链表综合.docx_第3页
第3页 / 共16页
实验4 链表综合.docx_第4页
第4页 / 共16页
实验4 链表综合.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

实验4 链表综合.docx

《实验4 链表综合.docx》由会员分享,可在线阅读,更多相关《实验4 链表综合.docx(16页珍藏版)》请在冰豆网上搜索。

实验4 链表综合.docx

实验4链表综合

河南工业大学实验报告

课程名称:

C语言程序设计开课实验室:

6307

专业班级

计类1503

学号

201516920301

姓名

杨万理

实验项目名称

函数与程序结构

实验日期

2016.3.23

成绩评定

 

95

 

实验报告撰写要求:

认真总结实验,规范撰写实验报告。

实验报告内容应包括实验目的、实验要求、实验过程、实验总结,其中实验过程应附必要的截图,给出详细说明,对本实验中自行完成的较复杂网络拓扑的配置实现,应用表格给出各设备的主要参数配置(见下表),最后,对实验中遇到的问题和解决进行描述和剖析,总结收获。

并完成思考题。

设备参数配置一览表:

设备名称/编号

端口名称/编号

IP地址

子网掩码

网关

其他配置说明

SA

F0/1

202.102.46.8

255.255.255.0

202.102.46.254

RJ45100M以太网连接

一、实验目的:

1.掌握单链表的概念和建立方法。

2.掌握单链表的几种基本操作。

二、实验环境:

Vc

三、实验要求:

(略)

四、实验内容:

#include

#include

#include

structstudent

{

charnum[20];

charname[30];

ints1,s2,s3,s;

structstudent*next;

};

voidprint(structstudent*head);

structstudent*creat();

voidfail(structstudent*head);

voidsearch(structstudent*head,char*num1);

structstudent*Delet(structstudent*head,char*num);

structstudent*Insert(structstudent*head,structstudent*stud);

intCOUNT=0;

intmain()

{

structstudent*head=NULL;

structstudent*p;

ints1,s2,s3,s;

charnum[20],name[30];

intchoice;

while

(1)

{

putchar(10);

printf("欢迎进入学生信息管理系统\n");

printf("********************\n");

printf("*1--创建学生信息*\n");

printf("*2--浏览学生信息*\n");

printf("*3--查询学生信息*\n");

printf("*4--删除学生信息*\n");

printf("*5--添加学生信息*\n");

printf("*6--查看不及格学生信息*\n");

printf("*0--退出程序*\n");

printf("********************\n");

putchar(10);

printf("请输入你的选择:

");

scanf("%d",&choice);

switch(choice)

{

case1:

head=creat();

print(head);

break;

case2:

print(head);

break;

case3:

printf("请输入要查找的学号:

");

scanf("%s",num);

search(head,num);

break;

case4:

printf("请输入要删除的学生学号:

");

scanf("%s",num);

head=Delet(head,num);

print(head);

break;

case5:

printf("输入学生的学号、姓名、3科成绩:

\n");

scanf("%s%s%d%d%d",num,name,&s1,&s2,&s3);

s=s1+s2+s3;

p=(structstudent*)malloc(sizeof(structstudent));

strcpy(p->num,num);

strcpy(p->name,name);

p->s1=s1;

p->s2=s2;

p->s3=s3;

p->s=s;

head=Insert(head,p);

print(head);

break;

case6:

fail(head);

case0:

exit(0);

}

}

}

structstudent*creat()

{

structstudent*head,*tail,*p;

ints1,s2,s3,s;

intsize=sizeof(structstudent);

head=tail=NULL;

while

(1)

{

charnum[20]={0},name[30]={0};

printf("请输入第%d学生的学号,姓名,三科成绩,以#结束:

\n",COUNT+1);

scanf("%s",num);

if(strcmp(num,"#")==0)

{

break;

}

else

{

scanf("%s%d%d%d",name,&s1,&s2,&s3);

s=s1+s2+s3;

}

p=(structstudent*)malloc(size);

strcpy(p->num,num);

strcpy(p->name,name);

p->s1=s1;

p->s2=s2;

p->s3=s3;

p->s=s;

p->next=NULL;

if(head==NULL)

{

head=p;

}

else

{

tail->next=p;

}

tail=p;

COUNT++;

}

printf("新创建学生信息如下:

\n");

returnhead;

}

voidprint(structstudent*head)

{

structstudent*ptr;

if(head==NULL)

{

printf("\n没有学生信息。

\n");

return;

}

printf("\n学号姓名语文成绩数学成绩英语成绩总分\n");

for(ptr=head;ptr!

=NULL;ptr=ptr->next)

{

printf("%s%s%d%d%d%d\n",ptr->num,ptr->name,ptr->s1,ptr->s2,ptr->s3,ptr->s);

}

}

voidfail(structstudent*head)

{

structstudent*p=NULL;

intt=0;

if(head==NULL)

{

printf("没有学生信息\n");

return;

}

printf("不及格学生信息如下:

\n");

printf("学号姓名语文成绩数学成绩英语成绩总分\n");

for(p=head;p!

=NULL;p=p->next)

{

if((p->s1<60)||(p->s2<60)||(p->s3<60))

{

printf("%s%s%d %d%d%d\n",p->num,p->name,p->s1,p->s2,p->s3,p->s);

t++;

}

}

if(t==0)

printf("学生全部及格\n");

}

voidsearch(structstudent*head,char*num1)

{

structstudent*ptr;

intflag=0;

if(head==NULL)

{

printf("\n没有学生信息。

\n");

return;

}

for(ptr=head;ptr!

=NULL;ptr=ptr->next)

{

if(strcmp(ptr->num,num1)==0)

{

flag=1;

break;

}

}

if(flag)

{

printf("该学号的信息已查询到,如下所示:

\n");

printf("\n学号姓名语文成绩数学成绩英语成绩总分\n");

printf("%s%s%d%d%d%d\n",ptr->num,ptr->name,ptr->s1,ptr->s2,ptr->s3,ptr->s);

}

else

{

printf("该学号不存在。

\n");

}

}

structstudent*Delet(structstudent*head,char*num)

{

structstudent*ptr1,*ptr2;

intt=0;

for(ptr1=head;ptr1!

=NULL;ptr1=ptr1->next)

{

if(strcmp(ptr1->num,num)==0)

t++;

}

if(t==0)

{

printf("需要删改的学生信息不存在:

\n");

returnhead;

}

if(head!

=NULL&&strcmp(head->num,num)==0)

{

ptr2=head;

head=head->next;

free(ptr2);

}

if(head==NULL)

{

returnNULL;

}

ptr1=head;

ptr2=head->next;

while(ptr2!

=NULL)

{

if(strcmp(ptr2->num,num)==0)

{

ptr1->next=ptr2->next;

free(ptr2);

}

else

{

ptr1=ptr2;

}

ptr2=ptr1->next;

}

printf("修改后的学生信息如下:

\n");

returnhead;

}

structstudent*Insert(structstudent*head,structstudent*stud)

{

structstudent*ptr,*ptr1,*ptr2;

intflag=0;

ptr2=head;

ptr=stud;

if(head==NULL)

{

head=ptr;

head->next=NULL;

returnhead;

}

else

{

for(;ptr2!

=NULL;ptr2=ptr2->next)

{

if(strcmp(ptr2->num,stud->num)==0)

{

flag=1;

break;

}

}

if(flag==1)

{

printf("输入的学号已经存在,请重新操作。

\n");

}

else

{

ptr2=head;

printf("执行了flag=0\n");

while((strcmp(ptr->num,ptr2->num)>0)&&(ptr2->next!

=NULL))

{

ptr1=ptr2;

ptr2=ptr2->next;

}

if(strcmp(ptr->num,ptr2->num)<=0)

{

if(head==ptr2)

{

head=ptr;

}

else

{

ptr1->next=ptr;

}

ptr->next=ptr2;

}

else

{

ptr2->next=ptr;

ptr->next=NULL;

}

}

printf("修改后的学生信息如下:

\n");

returnhead;

}

}

五、实验总结:

在试验中对于程序整体的把握能力不够,在一些细节的地方做的不好,通过这次实验让我对

链表有了更加深刻的认识。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1