顺序表的应用-数据结构实验报告.docx

上传人:wj 文档编号:596861 上传时间:2023-04-29 格式:DOCX 页数:9 大小:60.61KB
下载 相关 举报
顺序表的应用-数据结构实验报告.docx_第1页
第1页 / 共9页
顺序表的应用-数据结构实验报告.docx_第2页
第2页 / 共9页
顺序表的应用-数据结构实验报告.docx_第3页
第3页 / 共9页
顺序表的应用-数据结构实验报告.docx_第4页
第4页 / 共9页
顺序表的应用-数据结构实验报告.docx_第5页
第5页 / 共9页
顺序表的应用-数据结构实验报告.docx_第6页
第6页 / 共9页
顺序表的应用-数据结构实验报告.docx_第7页
第7页 / 共9页
顺序表的应用-数据结构实验报告.docx_第8页
第8页 / 共9页
顺序表的应用-数据结构实验报告.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

顺序表的应用-数据结构实验报告.docx

《顺序表的应用-数据结构实验报告.docx》由会员分享,可在线阅读,更多相关《顺序表的应用-数据结构实验报告.docx(9页珍藏版)》请在冰点文库上搜索。

顺序表的应用-数据结构实验报告.docx

大学数据结构实验报告

课程名称数据结构实验第(三)次实验实验名称顺序表的应用

学生姓名于歌专业班级学号

实验成绩指导老师(签名)日期2018年9月30日

一、实验目的

1.学会定义线性表的顺序存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义。

2.掌握顺序表的基本操作,实现顺序表的插入、删除、查找以及求并集等运算。

3.掌握对多函数程序的输入、编辑、调试和运行过程。

二、实验要求

1.预习C语言中结构体的定义与基本操作方法。

2.对顺序表的每个基本操作用单独的函数实现。

3.编写完整程序完成下面的实验内容并上机运行。

4.整理并上交实验报告。

三、实验内容:

1.定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能:

(1)根据指定学生个数,逐个输入学生信息

(2)逐个显示学生表中所有学生的相关信息

(3)根据姓名进行查找,返回此学生的学号和成绩

(4)根据指定的位置可返回相应的学生信息(学号,姓名,成绩)

(5)给定一个学生信息,插入到表中指定的位置

(6)删除指定位置的学生记录

(7)统计表中学生个数

四、实验设计

1.定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能:

(1)根据指定学生个数,逐个输入学生信息

for(count=0;count

{

scanf("%s%s%d",e.no,e.name,&e.score);

Input(&L,e);

}

StatusInput(SqList*L,ElemTypee)

{

if(!

(*L).elem)

returnERROR;

(*L).elem[(*L).length++]=e;

returnOK;

}

(2)逐个显示学生表中所有学生的相关信息

StatusPrint(SqListL)

{

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

intcount;

for(count=0;count

Pri(L.elem[count]);

returnOK;

}

voidPri(ElemTypee)

{

printf("%8s|",e.no);

printf("%20s|",e.name);

printf("%8d\n",e.score);

}

(3)根据姓名进行查找,返回此学生的学号和成绩

StatusLocateElem(SqListL,ElemTypee)

{

intcount;

for(count=0;count

if(strcmp(L.elem[count].name,e.name)==0)

break;

if(count

{

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

Pri(L.elem[count]);

}

else

printf("%s在顺序表中查不到!

\n",e.name);

returnOK;

}

(4)根据指定的位置可返回相应的学生信息(学号,姓名,成绩)

StatusLocateNum(SqListL,inti)

{

if(i<1||i>L.length+1)

returnOVERFLOW;

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

Pri(L.elem[i-1]);

returnOK;

}

(5)给定一个学生信息,插入到表中指定的位置

StatusListInsert(SqList*L,inti,ElemTypee)

{

intcount;

if(i<1||i>(*L).length+1)

returnOVERFLOW;

if((*L).length==(*L).MaxSize)

(*L).elem=(ElemType*)realloc((*L).elem,sizeof(ElemType)*((*L).MaxSize+LISTINCREMENT));

if(!

(*L).elem)

exit(OVERFLOW);

for(count=(*L).length-1;count>=i-1;count--)

(*L).elem[count+1]=(*L).elem[count];

(*L).elem[i-1]=e;

(*L).length++;

returnOK;

}

(6)删除指定位置的学生记录

StatusListDelete(SqList*L,inti)

{

intcount;

if(i<1||i>(*L).length+1)

returnOVERFLOW;

for(count=i;count<(*L).length;count++)

(*L).elem[count-1]=(*L).elem[count];

(*L).length--;

returnOK;

}

(7)统计表中学生个数

printf("表中学生的个数为:

%d\n",L.length);

(8)主函数

intmain()

{

SqListL;

ElemTypee;

inti,count,n,number;

InitList(&L);

printf("请输入学生的个数:

\n");

scanf("%d",&n);

printf("请输入学号、姓名、成绩:

\n");

for(count=0;count

{

scanf("%s%s%d",e.no,e.name,&e.score);

Input(&L,e);

}

printf("学生信息生成成功!

\n");

Pr();

scanf("%d",&n);

while(n>0&&n<7)

{

switch(n)

{

case1:

Print(L);

break;

case2:

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

");

scanf("%s",e.name);

LocateElem(L,e);

break;

case3:

printf("请输入要查找的学生的位置:

");

scanf("%d",&i);

LocateNum(L,i);

break;

case4:

printf("输入插入学生的位置、学号、姓名、成绩:

");

scanf("%d%s%s%d",&i,e.no,e.name,&e.score);

if(ListInsert(&L,i,e))

printf("插入成功!

\n");

break;

case5:

printf("请输入要删除的学生的位置:

\n");

scanf("%d",&i);

if(ListDelete(&L,i))

printf("删除成功!

\n");

break;

case6:

printf("表中学生的个数为:

%d\n",L.length);

}

Pr();

scanf("%d",&n);

}

if(n==7)

printf("退出成功!

");

return0;

}

五、实验测试

2.定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能运行界面

六、总结

附录1:

源代码

#include

#include

#include

#defineLIST_INIT_SIZE100

#defineLISTINCREMENT10

#defineOK1

#defineERROR0

#defineOVERFLOW2

typedefintStatus;

typedefstruct

{

charno[8];

charname[20];

intscore;

}Student;

typedefStudentElemType;

typedefstruct

{

ElemType*elem;

intlength;

intMaxSize;

}SqList;

StatusInitList(SqList*L)

{

(*L).elem=(ElemType*)malloc(sizeof(ElemType)*LIST_INIT_SIZE);

if(!

(*L).elem)

exit(OVERFLOW);

(*L).length=0;

(*L).MaxSize=LIST_INIT_SIZE;

returnOK;

}

StatusInput(SqList*L,ElemTypee)

{

if(!

(*L).elem)

returnERROR;

(*L).elem[(*L).length++]=e;

returnOK;

}

StatusListInsert(SqList*L,inti,ElemTypee)

{

intcount;

if(i<1||i>(*L).length+1)

returnOVERFLOW;

if((*L).length==(*L).MaxSize)

(*L).elem=(ElemType*)realloc((*L).elem,sizeof(ElemType)*((*L).MaxSize+LISTINCREMENT));

if(!

(*L).elem)

exit(OVERFLOW);

for(count=(*L).length-1;count>=i-1;count--)

(*L).elem[count+1]=(*L).elem[count];

(*L).elem[i-1]=e;

(*L).length++;

returnOK;

}

StatusListDelete(SqList*L,inti)

{

intcount;

if(i<1||i>(*L).length+1)

returnOVERFLOW;

for(count=i;count<(*L).length;count++)

(*L).elem[count-1]=(*L).elem[count];

(*L).length--;

returnOK;

}

StatusLocateElem(SqListL,ElemTypee)

{

intcount;

for(count=0;count

if(strcmp(L.elem[count].name,e.name)==0)

break;

if(count

{

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

Pri(L.elem[count]);

}

else

printf("%s在顺序表中查不到!

\n",e.name);

returnOK;

}

StatusLocateNum(SqListL,inti)

{

if(i<1||i>L.length+1)

returnOVERFLOW;

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

Pri(L.elem[i-1]);

returnOK;

}

StatusPrint(SqListL)

{

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

intcount;

for(count=0;count

Pri(L.elem[count]);

returnOK;

}

voidPri(ElemTypee)

{

printf("%8s|",e.no);

printf("%20s|",e.name);

printf("%8d\n",e.score);

}

voidPr()

{

printf("\n1.输出全部的学生信息\n");

printf("2.通过姓名查找学号和成绩\n");

printf("3.通过位置查找学生的信息\n");

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

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

printf("6.统计学生个数\n");

printf("7.退出\n");

printf("请输入要使用的功能:

");

}

intmain()

{

SqListL;

ElemTypee;

inti,count,n,number;

InitList(&L);

printf("请输入学生的个数:

\n");

scanf("%d",&n);

printf("请输入学号、姓名、成绩:

\n");

for(count=0;count

{

scanf("%s%s%d",e.no,e.name,&e.score);

Input(&L,e);

}

printf("学生信息生成成功!

\n");

Pr();

scanf("%d",&n);

while(n>0&&n<7)

{

switch(n)

{

case1:

Print(L);

break;

case2:

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

");

scanf("%s",e.name);

LocateElem(L,e);

break;

case3:

printf("请输入要查找的学生的位置:

");

scanf("%d",&i);

LocateNum(L,i);

break;

case4:

printf("输入插入学生的位置、学号、姓名、成绩:

");

scanf("%d%s%s%d",&i,e.no,e.name,&e.score);

if(ListInsert(&L,i,e))

printf("插入成功!

\n");

break;

case5:

printf("请输入要删除的学生的位置:

\n");

scanf("%d",&i);

if(ListDelete(&L,i))

printf("删除成功!

\n");

break;

case6:

printf("表中学生的个数为:

%d\n",L.length);

}

Pr();

scanf("%d",&n);

}

if(n==7)

printf("退出成功!

");

return0;

}

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2