数据结构实验教案
更新时间:2023-12-09 04:41:01 阅读量: 教育文库 文档下载
实验一 线性表的实验
一、实验目的及要求
1、掌握用Visual C++6.0调试顺序表的基本方法。
2、掌握顺序表的基本操作,插入、删除、查找、以及有序顺序表的合并等算法的实现。
3、掌握用Visual C++6.0上机调试单链表的基本方法。
4、掌握单链表的插入、删除、查找、求表长以及有序单链表的合并算法的实现。 5、进一步掌握循环单链表的插入、删除、查找算法的实现。 二、实验学时
4学时 三、实验任务
任务一:用顺序表实现通讯录管理
1、 构建通讯录的顺序表并输出检验。 2、 增加插入记录的功能并输出检验。 3、增加按学号查找的功能并运行验证。 4、增加删除记录的功能并运行验证。 任务二:用链表实现通讯录管理
1、构建通讯录的链表并输出检验 2、增加插入记录的功能并输出检验。 3、增加按学号查找的功能并运行验证。 4、增加删除记录的功能并运行验证。 四、实验重点、难点
1、 在顺序表中移动元素。
2、 在顺序表中找到正确的插入位置。
3、 在单链表中寻找到第i-1个结点并用指针p指示。 4、 比较两个单链表的节点数据大小。 五、操作内容与要求
任务一:用顺序表实现通讯录管理
1、构建如表1所示的顺序表并输出检验,实现表1。 2、增加插入记录的功能并输出检验,实现表2。 3、增加按学号查找的功能并运行验证。 4、增加删除记录的功能并运行验证。
表1 学号 姓名 性别 手机号码 QQ号 2013001 张珊 女 13800001919 34578 表2 2013002 李思 女 13910121978 8796532 2013003 陈琪 女 13789450012 3789123 2013004 王强 男 13634567856 6543783 2013005 赵括 男 13534408976 5679 2013006 刘刚 男 13386543211 98315 注意:用结构化程序设计的方法实现即(其中的)把单一功能设计成一个独立的函数。如构建顺序表设计成一个函数,同样插入、查找、删除、输出也设计成独立的函数。 任务二:用链表实现通讯录管理
1、构建通讯录的链表并输出检验,实现表1。 2、增加插入记录的功能并输出检验,实现表2。
3、增加按学号查找的功能并运行验证。 4、增加删除记录的功能并运行验证。
实验解答参考:
1、要完成此功能,先要考虑数据类型,再给出构建顺序表的函数及输出的函数,然后可以写出主函数了。
参考代码如下: #include
#define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef struct{
char xuehao[14];//学号 char name[20]; //姓名 int sex; //性别 char tel[14]; //联系电话 char qq[12]; //QQ号 }ElemType;
typedef struct{
ElemType *elem;//顺序表的存储空间基址,相当于一个一维的数组名 int length;//表的实际元素个数,即表的长度 int listsize;//最大可存储的元素个数,表的长度的上限 }SqList;
void InitSeqList(SqList &L) {
char flag; int i,n;
ElemType *p;
L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType)); L.length=0;
L.listsize=LIST_INIT_SIZE;
printf(\是否输入初始数据?(Y/N)\ scanf(\
if(flag=='N'||flag=='n') return; printf(\请输入初始化数据的个数:\
- 1 -
scanf(\
if(n>L.listsize) {printf(\数据太多,不足以存储!\ p=L.elem; L.length=n;
for(i=0;i printf(\请输入第%d个数据(学号 姓名 性别(0或1) 联系电话 QQ号):\\n\ scanf(\ p++; } return; } void PrintSeqList(SqList &L) { int i; printf(\学号 姓名 性别 联系电话 QQ号\\n\ for(i=0;i printf(\ if(L.elem[i].sex) printf(\男 \女 \ printf(\ } } int main() { SqList L; InitSeqList(L); PrintSeqList(L); return 0; } 2、增加下面的函数并适当调整main函数。 int InsertSeqList(SqList &L,int i,ElemType &e) { int j; ElemType *q,*p; if(L.length+1>L.listsize ) {printf(\表满,失败!\ if(i<1||i>L.length+1) {printf(\插入位置错误,失败!\ q=&(L.elem[i-1]); for(p=&(L.elem[L.length-1]);p>=q;--p) { - 2 - strcpy((p+1)->xuehao,p->xuehao); strcpy((p+1)->name ,p->name); (p+1)->sex=p->sex ; strcpy((p+1)->tel,p->tel); strcpy((p+1)->qq,p->qq); } strcpy(q->xuehao,e.xuehao); strcpy(q->name ,e.name); q->sex=e.sex ; strcpy(q->tel,e.tel); strcpy(q->qq,e.qq); L.length++; return 1; } 主函数也要作修改如下: int main() { int i; ElemType e; SqList L; InitSeqList(L); PrintSeqList(L); i=2; printf(\请输入要插入的数据(学号 姓名 性别(0或1) 联系电话 QQ号):\\n\ scanf(\ InsertSeqList(L,i,e); PrintSeqList(L); } 3、增加下面的函数并适当调整main函数。 int LocateList(SqList &L,char *x) { int i=0; while(i if(i printf(\学号 姓名 性别 联系电话 QQ号\\n\ printf(\ if(L.elem[i].sex) printf(\男 \女 \ - 3 - printf(\ return i+1; } return 0; } 4、增加下面的函数并适当调整main函数。 int DeleteList(SqList &L,int i) { int j; if(L.length ==0) {printf(\表空,删除失败!\\n\ if(i<1||i>L.length) {printf(\删除位置错,失败!\\n\ for(j=i;j<=L.length -1;j++) { strcpy(L.elem[j-1].xuehao ,L.elem [j].xuehao ); strcpy(L.elem [j-1].name ,L.elem [j].name ); L.elem [j-1].sex =L.elem [j].sex ; strcpy(L.elem [j-1].tel ,L.elem [j].tel ); strcpy(L.elem [j-1].qq ,L.elem [j].qq ); } L.length --; return 1; } 任务二: 1、要完成此实验,要考虑4点:数据类型如何定义?链表结点的类型具体如何定义?如何建立链表?如何输出链表以便验证? #include typedef struct{ char xuehao[14];//学号 char name[20]; //姓名 int sex; //性别 char tel[14]; //联系电话 char qq[12]; //QQ号 }ElemType; - 4 -
正在阅读:
数据结构实验教案12-09
2014年4月自考劳动关系学真题06-07
党员干部践行三严三实学习心得感悟范文四篇04-03
构建和谐校园心得体会05-10
韩国第一美女车模图片02-19
部门工作总结,2022年部门工作总结范文07-31
2011考研英语(一)模拟试卷二01-02
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 数据结构
- 教案
- 实验
- 最新电大国家开放大学《管理学基础》网络核心课形考网考作业试题及答案
- 2014 苏州海内外华人神经科学大会
- 柳市四小2015年学校工作报告
- 16秋西南交《微机原理及应用A》在线作业二
- MATLAB期末复习资料
- 复习提纲
- 人教版高中政治必修二习题:《2.2 民主决策:做出最佳选择》 含答案
- DYX-A型7×4-12液压尾管悬挂器说明书
- 2019学年七年级英语上学期第一次月考试题(无答案) 人教新目标版
- 高淳规划志 - 图文
- 动物生理学各章练习题
- GMP文件最新目录 - 图文
- 一种15W三路输出DCDC模块电源的设计 - 图文
- 物理实验-惯性秤-实验报告 - 图文
- 中央银行学题库(附答案)13
- 勘察-设计-咨询招标文件(范本,广州)
- QJES管理手册 - 图文
- 大学计算机基础(文经医外类)习题参考答案
- 1 CIR机车电台 - 图文
- 班级教导会 班佳 - 图文