长沙理工大学数据结构链表的实现及应用实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

{

相关文档
最新文档