数据结构实验报告二单链表的应用

更新时间:2023-11-04 19:43:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《数据结构》实验报告

实验二、单链表的应用

专 业 班 级 学 号 学生姓名 指导老师

河南科技大学管理学院

年 月 日

一、实验目的

熟练掌握线性表的链式存储结构的建立方法以及基本操作算法,并根据实际问题的要求,灵活运用。

二、实验内容

本次实验要求以班级学生信息作为管理对象,根据实验一建立班级学生信息线性表的链式存储结构,并练习使用单链表的基本操作算法,实现对班级学生信息的管理,包括学生信息的插入、学生信息的删除、学生信息的查询和学生信息线性表的输出。

三、完成情况

#include #include

//#define MAXSIZE 100

typedef struct{

char num[8];/*学号*/ char name[9];/*姓名*/ char gender[3];/*性别*/ int score;/*成绩*/ }DataType;

typedef struct {

DataType data; struct LNode *next; }LNode,*LinkList;

int menu_select() {

int sn;

printf(\ 学生信息管理系统\\n\

printf(\ printf(\ 1.学生信息线性表的建立\\n\ printf(\ 2.插 入 学 生 信 息\\n\ printf(\ 3.查 询 学 生 信 息\\n\ printf(\ 4.删 除 学 生 信 息\\n\ printf(\ 5.输 出 所有学生信息\\n\ printf(\ 0.退 出 管 理 系 统\\n\

printf(\ printf(\请选择0-5:\\n\ for(;;)

- 1 -

{ scanf(\ if (sn<0 || sn>5) printf(\输入错误,重选0-5\\n\ else break; }

return sn; }

void createList(LinkList L) {

int n,i=0; LNode *p;

printf(\有几位学生?请输入:\\n\ fflush(stdin); scanf(\

printf(\以下请输入这%d位学生的信息:\\n\ for(i=0;i

printf(\第%d位学生:\

printf(\学号(8) 姓名(8) 性别 成绩\\n\ fflush(stdin);

p=(LinkList)malloc(sizeof(LNode));

scanf(\ p->next=L->next;L->next=p; } }

void printList(LinkList L) {

int i=0; LNode *p; p=L->next;

printf(\学号(8) 姓名(8) 性别 成绩\\n\ printf(\ while(p) {

printf(\第%d位学生:\

printf(\ printf(\ p=p->next;i++; }

- 2 -

}

int insert(LinkList L,LNode *student,int i) {

int j;

LNode *p; p=L; j=0;

while(p && jnext;++j;}

if(!p||j>i-1) printf(\ else{ student->next=p->next; p->next=student; } return 1; }

int findList(LinkList L) {

char num[8]; char name[9]; int xz;

LNode *p;p=L;

printf(\ printf(\、按学号查询\\n\ printf(\、按姓名查询\\n\

printf(\ printf(\ 请选择: \ fflush(stdin); scanf(\ if (xz==1) {

printf(\请输入要查找学生的学号:\ scanf(\ p=L->next; while(p) { if(strcmp(p->data.num,num)!=0) p=p->next; else break;} return p; }

else if (xz==2)

- 3 -

{

printf(\请输入要查找学生的姓名:\ scanf(\ p=L->next; while(p) { if(strcmp(p->data.num,num)!=0) p=p->next; else break;} return p; } }

void delNode(LinkList L) {

int i;LNode *p,*q;q=L;

printf(\请先查找您要删除的学生信息:\\n\ p=findList(L); if(!p) {

printf(\没有查到要删除的学生信息\ return; }

while(q->next!=p) {

q=q->next; }

q->next=p->next;

printf(\该学生信息已被删除!\\n\}

void main() {

LinkList L;

LNode *student,*p; int i;

L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; while(1){

switch(menu_select()) {

case 1:

printf(\

- 4 -

printf(\ 学生信息线性表的建立 \\n\ printf(\ createList(L); break; case 2:

printf(\ printf(\添加学生信息\\n\

printf(\请输入要添加的学生信息:\\n\

printf(\学号(8) 姓名(8) 性别 成绩\\n\

printf(\ student=(LinkList)malloc(sizeof(LNode));

fflush(stdin);

scanf(\t->data.score);

printf(\请输入要插入的位置:\\n\ fflush(stdin); scanf(\

insert(L,student,i); break; case 3:

printf(\ printf(\查询学生信息\\n\

printf(\ p=findList(L); if(p) {

printf(\您要查的学生为:\\n学号(8) 姓名(8) 性别 成绩\\n\ printf(\

printf(\ printf(\ } else

printf(\没有您要查询的学生信息!\ break; case 4:

printf(\ printf(\删除学生信息\\n\

printf(\ delNode(L); break; case 5:

printf(\

- 5 -

printf(\输出所有学生信息\\n\

printf(\ printList(L); break; case 0:

printf(\再见!\\n\ getch(); return; } } }

- 6 -

实验成绩

评价项目 独立完成完整的实验内容,结果完全正确,报告内容完整,排版整洁美观,能真实体现实际操作过程及遇到的问题。 完成实验,实验内容较为完整,结果正确,报告内容较为完整,排版较为整洁美观,能体现实际操作过程及遇到的问题。 基本完成实验,结果正确,报告内容欠缺,排版较为整洁美观,能体现实际操作过程及遇到的问题。 不能独立完成完整的实验内容,结果不真实,报告内容欠缺,排版欠整洁美观,不能体现实际操作过程及遇到的问题。

评分等级 A B C D - 7 -

本文来源:https://www.bwwdw.com/article/c6b2.html

Top