数据结构实验一 实验报告.docx

上传人:b****1 文档编号:2089391 上传时间:2022-10-26 格式:DOCX 页数:10 大小:94.28KB
下载 相关 举报
数据结构实验一 实验报告.docx_第1页
第1页 / 共10页
数据结构实验一 实验报告.docx_第2页
第2页 / 共10页
数据结构实验一 实验报告.docx_第3页
第3页 / 共10页
数据结构实验一 实验报告.docx_第4页
第4页 / 共10页
数据结构实验一 实验报告.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

数据结构实验一 实验报告.docx

《数据结构实验一 实验报告.docx》由会员分享,可在线阅读,更多相关《数据结构实验一 实验报告.docx(10页珍藏版)》请在冰豆网上搜索。

数据结构实验一 实验报告.docx

数据结构实验一实验报告

班级:

学号:

实验一线性表的基本操作

一、实验目的

1、掌握线性表的定义;

2、掌握线性表的基本操作,如建立、查找、插入和删除等。

二、实验内容

定义一个包含学生信息(学号,,成绩)的顺序表和链表(二选一),使其具有如下功能:

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

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

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

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

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

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

(7)统计表中学生个数。

三、实验环境

VisualC++

四、程序分析与实验结果

#include

#include

#include

#include

#defineOK1

#defineERROR0

#defineOVERFLOW-2

typedefintStatus;//定义函数返回值类型

typedefstruct

{

charnum[10];//学号

charname[20];//

doublegrade;//成绩

}student;

typedefstudentElemType;

typedefstructLNode

{

ElemTypedata;//数据域

structLNode*next;//指针域

}LNode,*LinkList;

StatusInitList(LinkList&L)//构造空链表L

{

L=(structLNode*)malloc(sizeof(structLNode));

L->next=NULL;

returnOK;

}

StatusGetElem(LinkListL,inti,ElemType&e)//访问链表,找到i位置的数据域,返回给e

{

LinkListp;

p=L->next;

intj=1;

while(p&&j

{

p=p->next;

++j;

}

if(!

p||j>i)returnERROR;

e=p->data;

returnOK;

}

StatusSearch(LNodeL,charstr[],LinkList&p)//根据名字查找

{

p=L.next;

while(p)

{

if(strcmp(p->data.name,str)==0)

returnOK;

p=p->next;

}

returnERROR;

}

StatusListInsert(LinkListL,inti,ElemTypee)//在i个位置插入某个学生的信息

{

LinkListp,s;

p=L;

intj=0;

while(p&&j

{

p=p->next;

++j;

}

if(!

p||j>i-1)returnERROR;

s=(structLNode*)malloc(sizeof(LNode));

s->data=e;

s->next=p->next;

p->next=s;

returnOK;

}

StatusListDelete(LinkListp,inti)//删除i位置的学生信息

{

intj=0;

while((p->next)&&(j

{

p=p->next;

++j;

}

if(!

(p->next)||(j>i-1))returnERROR;

LinkListq;

q=p->next;

p->next=q->next;

deleteq;

returnOK;

}

voidInput(ElemType*e)

{

printf(":

");scanf("%s",e->name);

printf("学号:

");scanf("%s",e->num);

printf("成绩:

");scanf("%lf",&e->grade);

printf("输入完成\n\n");

}

voidOutput(ElemType*e)

{

printf(":

%-20s\n学号:

%-10s\n成绩:

%-10.2lf\n\n",e->name,e->num,e->grade);

}

intmain()

{

LNodeL;

LinkListp;

ElemTypea,b,c,d;

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

puts("1.构造链表");

puts("2.录入学生信息");

puts("3.显示学生信息");

puts("4.输入姓名,查找该学生");

puts("5.显示某位置该学生信息");

puts("6.在指定位置插入学生信息");

puts("7.在指定位置删除学生信息");

puts("8.统计学生个数");

puts("0.退出");

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

intx,choose=-1;

while(choose!

=0)

{

puts("请选择:

");

scanf("%d",&choose);

switch(choose)

{

case1:

if(InitList(p))

printf("成功建立链表\n\n");

else

printf("链表建立失败\n\n");

break;

case2:

printf("请输入要录入学生信息的人数:

");

scanf("%d",&x);

for(inti=1;i<=x;i++)

{

printf("第%d个学生:

\n",i);

Input(&a);

ListInsert(&L,i,a);

}

break;

case3:

for(inti=1;i<=x;i++)

{

GetElem(&L,i,b);

Output(&b);

}

break;

case4:

chars[20];

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

");

scanf("%s",s);

if(Search(L,s,p))

Output(&(p->data));

else

puts("对不起,查无此人");

puts("");

break;

case5:

printf("请输入要查询的位置:

");

intid1;

scanf("%d",&id1);

GetElem(&L,id1,c);

Output(&c);

break;

case6:

printf("请输入要插入的位置:

");

intid2;

scanf("%d",&id2);

printf("请输入学生信息:

\n");

Input(&d);

if(ListInsert(&L,id2,d))

{

x++;

puts("插入成功");

puts("");

}

else

{

puts("插入失败");

puts("");

}

break;

case7:

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

");

intid3;

scanf("%d",&id3);

if(ListDelete(&L,id3))

{

x--;

puts("删除成功");

puts("");

}

else

{

puts("删除失败");

puts("");

}

break;

case8:

printf("已录入的学生个数为:

%d\n\n",x);

break;

}

}

printf("\n\n谢谢您的使用,请按任意键退出\n\n\n");

system("pause");

return0;

}

用户界面:

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

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

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

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

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

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

(7)统计表中学生个数:

五、实验总结

数据结构是一门专业技术基础课。

它要求学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构,存储结构及相应的算法,并初步掌握算法的时间分析和空间分析技术。

不仅要考虑具体实现哪些功能,同时还要考虑如何布局,这次的实验题目是根据我们的课本学习进程出的,说实话,我并没有真正的读懂书本的知识,所以刚开始的时候,感到很棘手,于是又重新细读课本,这一方面又加强了对书本的理解,在这上面花费了一些心血,觉得它并不简单,是需要花大量时间来编写的。

在本次实验中,在程序构思及设计方面有了较大的锻炼,能力得到了一定的提高。

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

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1