数据结构实验一实验报告_第1页
数据结构实验一实验报告_第2页
数据结构实验一实验报告_第3页
数据结构实验一实验报告_第4页
数据结构实验一实验报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.z.班级::**:实验一线性表的根本操作实验目的1、掌握线性表的定义;2、掌握线性表的根本操作,如建立、查找、插入和删除等。实验容定义一个包含学生信息〔**,,成绩〕的顺序表和链表〔二选一〕,使其具有如下功能:(1)根据指定学生个数,逐个输入学生信息;(2)逐个显示学生表中所有学生的相关信息;(3)根据进展查找,返回此学生的**和成绩;(4)根据指定的位置可返回相应的学生信息〔**,,成绩〕;(5)给定一个学生信息,插入到表中指定的位置;(6)删除指定位置的学生记录;(7)统计表中学生个数。实验环境VisualC++程序分析与实验结果*include<stdio.h>*include<malloc.h>*include<stdlib.h>*include<string.h>*defineOK1*defineERROR0*defineOVERFLOW-2typedefintStatus; //定义函数返回值类型typedefstruct{ charnum[10];//** charname[20];// doublegrade;//成绩}student;typedefstudentElemType;typedefstructLNode{ ElemTypedata;//数据域 structLNode*ne*t;//指针域}LNode,*LinkList;StatusInitList(LinkList&L)//构造空链表L{ L=(structLNode*)malloc(sizeof(structLNode)); L->ne*t=NULL; returnOK;}StatusGetElem(LinkListL,inti,ElemType&e)//访问链表,找到i位置的数据域,返回给e{ LinkListp; p=L->ne*t; intj=1; while(p&&j<i) { p=p->ne*t; ++j; } if(!p||j>i) returnERROR; e=p->data; returnOK;}StatusSearch(LNodeL,charstr[],LinkList&p)//根据名字查找{ p=L.ne*t; while(p) { if(strcmp(p->,str)==0) returnOK; p=p->ne*t; } returnERROR;}StatusListInsert(LinkListL,inti,ElemTypee)//在i个位置插入*个学生的信息{ LinkListp,s; p=L; intj=0; while(p&&j<i-1) { p=p->ne*t; ++j; } if(!p||j>i-1) returnERROR; s=(structLNode*)malloc(sizeof(LNode)); s->data=e; s->ne*t=p->ne*t; p->ne*t=s; returnOK;}StatusListDelete(LinkListp,inti)//删除i位置的学生信息{ intj=0; while((p->ne*t)&&(j<i-1)) { p=p->ne*t; ++j; } if(!(p->ne*t)||(j>i-1)) returnERROR; LinkListq; q=p->ne*t; p->ne*t=q->ne*t; 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"); int*,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",&*); for(inti=1;i<=*;i++) { printf("第%d个学生:\n",i); Input(&a); ListInsert(&L,i,a); } break; case3: for(inti=1;i<=*;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)) { *++; puts("插入成功"); puts("); } else { puts("插入失败"); puts("); } break; case7: printf("请输入要删除的位置:"); intid3; scanf("%d",&id3); if(ListDelete(&L,id3)) { *--; puts("删除成功"); puts("); } else { puts("删除失败"); puts("); } break; case8: printf("已录入的学生个数为:%d\n\n",*); break; } } printf("\n\n您的使用,请按任意键退出\n\n\n"); system("pause"); return0;}用户界面:根据指定学生个数,逐个输入学生信息:逐个显示学生表中所有学生的相关信息:根据进展查找,返回此学生的**和成绩:根据指定的位置可返回相应的学生信息〔**,,成绩〕:给定一个学生信息,插入到表中指定的位置:删除指定位置的学生记录:统计表中学生个数:实验总结数据构造是一门专业技术根底课。它要求学会分析研究计算机加工的数据构造的特性,以便为应用涉及的数据选择适当的逻辑构造,存储构造及相应的算法,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论