长沙理工大学数据结构链表的实现及应用实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实 验 报 告
年级 班号 学号 姓名
实验名称: 第一次实验:简单学生管理系统
实验日期 2016年11月25日
计算机科学与技术系
2016年制
一、实验环境
Windows32位系统Microsoft Visual C++
二、实验目的
掌握链表的使用
三、实验内容
用单向链表实现的简单学生管理系统
四、数据结构与算法思想描述
对单链表的增删查改
五、程序清单
/* 函数信息:
菜单选项
void Menu();
初始化链表
void InitLink(node *head);
输出单个学生信息
void SingleShow(node *p);
尾插法
node* AddLink(node *p,char *num);
建立链表,并输入学生信息。
node *CreateLink(node *head);
查找学生信息,查找则返回查找位置前一个点
node *SearchLink(node *head, char *num);
增加学生信息,先进行查找,若已有则提示用户是否修改,否则增加void InsertLink(node *head, char *num);
修改学生信息,先进行查找,若已有则提示用户修改,否则退出
void ModifyLink(node *head, char *num);
删除学生信息
void DeleteLink(node *head, char *num);
显示所有学生信息
void Display(node *head)
*/
#include
#include
#include
#include
#include
#define MAXM 50 //学生管理系统名字学号成绩的最大字节数
#define Tip "\t\tName\t\tNumber\t\tScore\n"
int lenthLink = 0; //链表的长度
typedef struct node
{
char name[MAXM];
char number[MAXM];
char score[MAXM];
struct node *next;
}node;
int len = sizeof(node);
//菜单选项
void Menu()
{
printf("\n*******************************************************\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"); }
//初始化链表
void InitLink(node *head)
{
lenthLink = 0;
head->next = NULL;
}
//输出单个学生信息
void SingleShow(node *p)
{
printf("\t\t%s\t\t",p->name);
printf("%s\t\t",p->number);
printf("%s\n",p->score);
}
//尾插法
node* AddLink(node *p,char *num)
p->next = (node *)malloc(len);
p = p->next;
p->next = NULL;
strcpy(p->number,num);
printf("请输入学生姓名:\n");
getchar();
scanf("%s",p->name);
printf("请输入学生成绩:\n");
getchar();
scanf("%s",p->score);
lenthLink++;
return p;
}
//建立链表,并输入学生信息。
node *CreateLink(node *head)
{
InitLink(head);
char num[MAXM];
node *p = head;
printf("请输入学生学号,以0结束:\n");
getchar();
while(scanf("%s",num) && strcmp(num,"0")!=0 && num[0] != '-') //当输入学号为0或负数时结束输入
{
//尾插法建立
p = AddLink(p,num);
printf("请输入学生学号,以0结束:\n");
}
return head;
}
//查找学生信息,查找则返回查找位置前一个点
node *SearchLink(node *head, char *num)
{
node *p = head;
if(!head->next)
{
printf("尚未有学生信息!\n");
}
else
{
while(p->next)
{