链表实现学生信息管理Word格式.docx

上传人:b****5 文档编号:21162064 上传时间:2023-01-28 格式:DOCX 页数:13 大小:119.64KB
下载 相关 举报
链表实现学生信息管理Word格式.docx_第1页
第1页 / 共13页
链表实现学生信息管理Word格式.docx_第2页
第2页 / 共13页
链表实现学生信息管理Word格式.docx_第3页
第3页 / 共13页
链表实现学生信息管理Word格式.docx_第4页
第4页 / 共13页
链表实现学生信息管理Word格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

链表实现学生信息管理Word格式.docx

《链表实现学生信息管理Word格式.docx》由会员分享,可在线阅读,更多相关《链表实现学生信息管理Word格式.docx(13页珍藏版)》请在冰豆网上搜索。

链表实现学生信息管理Word格式.docx

(4)输入数字“3”进入删除信息功能模块。

程序提示并由用户输入学号,最终实现按照学号删除某个学生信息。

(5)输入数字“4”进入修改信息功能模块。

程序提示并由用户输入学号,最终实现按照学号修改某个学生信息。

(6)通过输入数字“0”使得程序结束。

(7)当用户执行浏览、插入、删除功能后,程序应继续提示用户通过数字键选择相应功能,直到用户输入数字“0”程序才结束。

3.实验编程指导

(1)可仿照本章单链表的定义形式,建立学生信息结点数据,并建立一个空的单链表。

(2)参考本章中单链表的算法描述和例题中的算法实现,在本程序中增加信息浏览、插入结点、删除结点、修改结点内容的算法实现函数。

(3)编写主函数,可通过在while循环结构中嵌入switch分支结构实现操作选择功能。

(4)完善插入、删除功能。

实现插入信息的录入、删除记录的定位等细节。

并完善用户操作界面,给出详细的操作提示。

5.实验报告要求

实验报告要求以word文件形式发到老师邮箱。

内容包括:

(1)报告封面包括实验名称、班级、姓名、学号以及实验完成日期。

(2)各程序模块名称及功能说明。

并绘制出主要功能函数的程序流程图。

(3)个人小结。

包括实验难点分析、进一步的工作、个人希望等。

(4)完整的程序清单。

各程序模块名称及功能说明:

主函数通过在while循环结构中嵌入switch分支结构实现操作选择功能。

scanning(head)函数:

通过头指针的输入,以每个指针的下个指针域是否为空位循环标志,按链表中的每一个单位输出数据。

insert(head)函数:

按输入的数据存储在一个NODE类型的指针里,若原来链表里没有元素,则将此作为第一个元素;

若原来的链表里有元素,则将该指针的next存储head->

next的地址,又将head->

next存储该指针的地址,返回head的首地址。

del(head)函数:

以输入学号为判断标准,在NODE型指针的next不为空的大循环中,建立两个相邻的NODE型的指针,若后一个指针指向的元素的学号与输入的相等,则将前一个指针的next赋为后指针的next,释放后指针所指地址的内容。

fix(head)函数:

以输入学号为判断标准,在NODE型指针的next不为空的大循环中,若存在某个元素的学号与输入的相等,则相应的将要修改的内容用新内容覆盖。

主要功能函数流程图:

insert(head)

scanning(head):

del(head):

Fix(head):

个人小结:

实验难点分析:

这个实验用的链表,若是前几天编可能会有疑惑,但做了课后的作业后,对链表也熟悉了,链表在第一个地方插入比顺序表简单。

难点与顺序表类似,也是在修改,删除的功能上。

进一步的工作:

在编译的过程中,出现了errorC1075说左侧的大括号“{”在匹配前遇到结束和errorC2601说本地函数非法,始终找不到错误,后来稀里糊涂地把函数位置换了换就又没错了,很不解,我觉得有必要再了解相关的错误原因。

个人希望:

希望能通过这个实验对单链表有更深地了解,能很熟练的运用它,同时我觉得对栈和队列还不是很熟悉,书上也不是很详细,我觉得自己有空应多看看类似的应用,以强化自己的能力。

源代码:

#include<

stdio.h>

string.h>

malloc.h>

structnode

{

intnumber;

charname[10];

charsex[5];

intclasses;

inttel;

structnode*next;

};

typedefstructnodeNODE;

voidscanning(NODE*head);

/*申明浏览函数*/

NODE*insert(NODE*head);

/*申明插入函数*/

voiddel(NODE*head);

/*申明删除函数*/

voidfix(NODE*head);

/*申明修改函数*/

intmain()

intchoice;

intflag=1;

NODE*head;

head=(NODE*)malloc(sizeof(NODE));

head->

next=NULL;

while(flag)

{

printf("

请选择功能:

\n1—信息浏览\n2—插入信息\n3—删除信息\n4-修改信息\n0—退出程序\n"

);

scanf("

%d"

&

choice);

switch(choice)

case1:

scanning(head);

break;

case2:

head=insert(head);

case3:

del(head);

case4:

fix(head);

case0:

flag=0;

break;

}

printf("

\n"

谢谢使用!

return0;

}

voidscanning(NODE*head)/*定义浏览函数*/

NODE*t;

t=head;

t=t->

next;

if(t==NULL)

无记录!

请先输入学生信息:

while(t!

=NULL)

学号:

%d\n"

t->

number);

姓名:

%s\n"

name);

性别:

sex);

班级:

classes);

联系方式:

tel);

t=t->

NODE*insert(NODE*head)/*定义插入函数*/

NODE*t,*p;

inta,b,c;

chare[10],f[5];

t=(NODE*)malloc(sizeof(NODE));

p=head;

if(p->

next==NULL)/*原本无元素*/

请输入学号:

scanf("

a);

请输入姓名:

%s"

e);

请输入性别:

f);

请输入班级:

b);

请输入号码:

c);

t->

number=a;

strcpy(t->

name,e);

sex,f);

classes=b;

tel=c;

p->

next=t;

else/*原本有元素*/

next=p->

returnhead;

voiddel(NODE*head)/*定义删除函数*/

intm;

NODE*s,*t;

s=head;

t=head->

请输入你要删除的同学的学号:

m);

if((t->

number)!

=m)

{

s=s->

t=t->

}

else

s->

next=t->

free(t);

break;

voidfix(NODE*head)/*定义修改函数*/

NODE*p,*t;

intm,q,z=1;

请输入你要修改的学生的学号:

p=p->

while(p!

if((p->

number)==m)

while(z)

printf("

你想要修改哪项数据?

\n1代表学号\n2代表姓名\n3代表性别\n4代表班级\n5代表联系方式\n(注意:

修改完毕请输入)\n"

q);

switch(q)

case1:

printf("

请输入修改后的学号!

scanf("

t->

p->

number=t->

number;

break;

请输入修改后的姓名!

strcpy(p->

name,t->

请输入修改的性别!

sex,t->

请输入修改的班级!

classes=t->

classes;

case5:

请输入修改后的联系方式!

scanf("

tel=t->

tel;

z=0;

}

p=p->

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

当前位置:首页 > 高中教育 > 英语

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

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