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

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

专业

班级

学号

学生姓名

指导老师

河南科技大学管理学院

年月日

一、实验目的

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

二、实验内容

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

三、完成情况

#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 学生信息管理系统\n");

printf("=========================================\n");

printf(" 1.学生信息线性表的建立\n");

printf(" 2.插入学生信息\n");

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

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

printf(" 5.输出所有学生信息\n");

printf(" 0.退出管理系统\n");

printf("==========================================\n");

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

for(;;)

{

scanf("%d",&sn);

if (sn<0 || sn>5)

printf("\n\t输入错误,重选0-5\n");

else

break;

}

return sn;

}

void createList(LinkList L)

{

int n,i=0;

LNode *p;

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

fflush(stdin);

scanf("%d",&n);

printf("以下请输入这%d位学生的信息:\n",n);

for(i=0;i

{

printf("第%d位学生:",i);

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

fflush(stdin);

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

scanf("%s%s%s%d",p->data.num,p->https://www.360docs.net/doc/2111420546.html,,p->data.gender,&p->data.score);

p->next=L->next;L->next=p;

}

}

void printList(LinkList L)

{

int i=0;

LNode *p;

p=L->next;

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

printf("-------------------------------------------\n");

while(p)

{

printf("第%d位学生:",i);

printf("%s,%s,%s,%d\n",p->data.num,p->https://www.360docs.net/doc/2111420546.html,,p->data.gender,p->data.score);

printf("------------------------------------------------------------------\n");

p=p->next;i++;

}

}

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("ERROR\n");

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("===========================\n");

printf("1、按学号查询\n");

printf("2、按姓名查询\n");

printf("===========================\n");

printf(" 请选择:");

fflush(stdin);

scanf("%d",&xz);

if (xz==1)

{

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

scanf("%s",num);

p=L->next;

while(p)

{

if(strcmp(p->data.num,num)!=0)

p=p->next;

else break;}

return p;

}

else if (xz==2)

{

printf("请输入要查找学生的姓名:");

scanf("%s",name);

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("**************************************\n");

printf(" 学生信息线性表的建立\n");

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

createList(L);

break;

case 2:

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

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

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

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

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

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

fflush(stdin);

scanf("%s%s%s%d",student->data.num,student->https://www.360docs.net/doc/2111420546.html,,student->data.gender,&studen t->data.score);

printf("请输入要插入的位置:\n");

fflush(stdin);

scanf("%d",&i);

insert(L,student,i);

break;

case 3:

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

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

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

p=findList(L);

if(p)

{

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

printf("-------------------------------------------\n");

printf("%s,%s,%s,%d\n",p->data.num,p->https://www.360docs.net/doc/2111420546.html,,p->data.gender,p->data.score);

printf("------------------------------------------------------------------\n");

}

else

printf("没有您要查询的学生信息!");

break;

case 4:

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

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

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

delNode(L);

break;

case 5:

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

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

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

printList(L);

break;

case 0:

printf("再见!\n");

getch();

return;

}

}

}

实验成绩

相关文档
最新文档