数据结构实验教案.doc

上传人:ni****g 文档编号:522280040 上传时间:2023-01-22 格式:DOC 页数:45 大小:243.50KB
返回 下载 相关 举报
数据结构实验教案.doc_第1页
第1页 / 共45页
数据结构实验教案.doc_第2页
第2页 / 共45页
数据结构实验教案.doc_第3页
第3页 / 共45页
数据结构实验教案.doc_第4页
第4页 / 共45页
数据结构实验教案.doc_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《数据结构实验教案.doc》由会员分享,可在线阅读,更多相关《数据结构实验教案.doc(45页珍藏版)》请在金锄头文库上搜索。

1、实验一 线性表的实验一、实验目的及要求1、掌握用Visual C+6.0调试顺序表的基本方法。2、掌握顺序表的基本操作,插入、删除、查找、以及有序顺序表的合并等算法的实现。3、掌握用Visual C+6.0上机调试单链表的基本方法。4、掌握单链表的插入、删除、查找、求表长以及有序单链表的合并算法的实现。5、进一步掌握循环单链表的插入、删除、查找算法的实现。二、实验学时4学时三、 实验任务任务一:用顺序表实现通讯录管理1、 构建通讯录的顺序表并输出检验。2、 增加插入记录的功能并输出检验。3、增加按学号查找的功能并运行验证。4、增加删除记录的功能并运行验证。任务二:用链表实现通讯录管理1、构建通

2、讯录的链表并输出检验2、增加插入记录的功能并输出检验。3、增加按学号查找的功能并运行验证。4、增加删除记录的功能并运行验证。四、实验重点、难点1、 在顺序表中移动元素。2、 在顺序表中找到正确的插入位置。3、 在单链表中寻找到第i-1个结点并用指针p指示。4、 比较两个单链表的节点数据大小。五、操作内容与要求任务一:用顺序表实现通讯录管理1、 构建如表1所示的顺序表并输出检验,实现表1。2、 增加插入记录的功能并输出检验,实现表2。3、 增加按学号查找的功能并运行验证。4、 增加删除记录的功能并运行验证。表1学号姓名性别手机号码QQ号2013001张珊女1380000191934578表220

3、13002李思女1391012197887965322013003陈琪女1378945001237891232013004王强男1363456785665437832013005赵括男1353440897656792013006刘刚男1338654321198315注意:用结构化程序设计的方法实现即(其中的)把单一功能设计成一个独立的函数。如构建顺序表设计成一个函数,同样插入、查找、删除、输出也设计成独立的函数。任务二:用链表实现通讯录管理1、构建通讯录的链表并输出检验,实现表1。2、增加插入记录的功能并输出检验,实现表2。3、增加按学号查找的功能并运行验证。4、增加删除记录的功能并运行验证。

4、实验解答参考:1、 要完成此功能,先要考虑数据类型,再给出构建顺序表的函数及输出的函数,然后可以写出主函数了。参考代码如下:#include#include#include#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef structchar xuehao14;/学号char name20; /姓名int sex; /性别char tel14; /联系电话char qq12; /QQ号ElemType;typedef structElemType *elem;/顺序表的存储空间基址,相当于一个一维的数组名int length;/

5、表的实际元素个数,即表的长度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(%c,&flag);if(flag=N|flag=n) return;printf(请输入初始化数据的个数:);scanf(%d,&

6、n);if(nL.listsize) printf(数据太多,不足以存储!);return;p=L.elem;L.length=n;for(i=0;ixuehao,p-name,&p-sex,p-tel,p-qq);p+;return;void PrintSeqList(SqList &L)int i; printf(学号 姓名 性别 联系电话 QQ号n);for(i=0;iL.listsize ) printf(表满,失败!);return 0;if(iL.length+1) printf(插入位置错误,失败!);return 0;q=&(L.elemi-1);for(p=&(L.elemL

7、.length-1);p=q;-p)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;

8、InitSeqList(L);PrintSeqList(L);i=2;printf(请输入要插入的数据(学号 姓名 性别(0或1) 联系电话 QQ号):n,i+1);scanf(%s%s%d%s%s,e.xuehao,e.name,&e.sex,e.tel,e.qq);InsertSeqList(L,i,e);PrintSeqList(L);3、增加下面的函数并适当调整main函数。 int LocateList(SqList &L,char *x)int i=0;while(iL.length &strcmp(L.elemi.xuehao ,x )+i;if(iL.length )print

9、f(学号 姓名 性别 联系电话 QQ号n);printf(%-14s%-14s,L.elemi.xuehao,L.elemi.name);if(L.elemi.sex) printf( 男 ); else printf( 女 );printf(%-14s%-10sn,L.elemi.tel,L.elemi.qq);return i+1;return 0;4、增加下面的函数并适当调整main函数。int DeleteList(SqList &L,int i)int j;if(L.length =0) printf(表空,删除失败!n);return 0;if(iL.length) printf(

10、删除位置错,失败!n);return 0;for(j=i;j=L.length -1;j+)strcpy(L.elemj-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点:数据类型如何定义?链表结点的类型具体如何定义?如何建立链

11、表?如何输出链表以便验证?#include#include#includetypedef structchar xuehao14;/学号char name20; /姓名int sex; /性别char tel14; /联系电话char qq12; /QQ号ElemType;typedef struct LNodeElemType data;struct LNode *next;LNode,*LinkList;LinkList CreatList()/头插法建立链表LinkList head;LinkList p;char flag=y;head=(LinkList)malloc(sizeof(LNode);/生成头结点head-next =NULL;while(flag=Y)|(flag=y)p=(LinkList)malloc(sizeof(LNode);if(!p) exit(-1);printf(请输入数据(学号 姓名 性别(0或1) 联系电话 QQ号):n);scanf(%s%s%

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 电子/通信 > 天线/微波/雷达

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号