数据结构实验.ppt

上传人:p** 文档编号:160595 上传时间:2023-03-02 格式:PPT 页数:38 大小:303KB
下载 相关 举报
数据结构实验.ppt_第1页
第1页 / 共38页
数据结构实验.ppt_第2页
第2页 / 共38页
数据结构实验.ppt_第3页
第3页 / 共38页
数据结构实验.ppt_第4页
第4页 / 共38页
数据结构实验.ppt_第5页
第5页 / 共38页
数据结构实验.ppt_第6页
第6页 / 共38页
数据结构实验.ppt_第7页
第7页 / 共38页
数据结构实验.ppt_第8页
第8页 / 共38页
数据结构实验.ppt_第9页
第9页 / 共38页
数据结构实验.ppt_第10页
第10页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据结构实验.ppt》由会员分享,可在线阅读,更多相关《数据结构实验.ppt(38页珍藏版)》请在第壹文秘上搜索。

1、实验一实验一 C语言复习语言复习l教学目的与要求 本实验的目的是帮助大家复习C语言的使用方法,特别是指针、结构体的内容,同时也为以后的各个实验做准备 l教学的重点与难点 指针、结构体、数组三种数据类型的混合使用实验预习检查内容l指针指向数组后,数组元素的访问有哪些形式?指针指向数组后,数组元素的访问有哪些形式?l在下列类型定义后,表达式在下列类型定义后,表达式a3.num的逻辑含义的逻辑含义是什么?类型是什么?是什么?类型是什么?struct studentlong num;float score;struct student *next;a5; 答:3号元素的num数据域long类型例题例题

2、#define NULL 0struct studentlong num;float score;struct student *next;main () struct student a,b,c,*head,*p; a.num=99101;a.score=89.5; b.num=99103;b.score=90; c.num=99107;c.score=85;/a 、b、 c变量赋值head=&a;a.next=&b;/a的后续为的后续为bb.next=&c;c.next=NULL;p=head;do printf(“%ld%5.1fn”,p-num,p-score ););/*输出输出学号

3、和成绩学号和成绩*/ p=p-next;while( ); 答:答:p!=NULLl9、设计一个可进行复数运算的演示程序。、设计一个可进行复数运算的演示程序。要求:实现下列六种基本运算:要求:实现下列六种基本运算:1)由输入)由输入的实部和虚部生成一个复数;的实部和虚部生成一个复数;2)两个复数)两个复数求和;求和;3)两个复数求差;)两个复数求差;4)两个复数求)两个复数求积;积;5)从已知复数中分离出实部;)从已知复数中分离出实部;6)从)从已知复数中分离出虚部。运算结果以相应已知复数中分离出虚部。运算结果以相应的复数或实数的表示形式显示。的复数或实数的表示形式显示。l10、设计一个可进行

4、有理数运算的演示程、设计一个可进行有理数运算的演示程序。要求:实现两个有理数相加、相减、序。要求:实现两个有理数相加、相减、相乘以及求分子或求分母的运算。相乘以及求分子或求分母的运算。实验内容及要求实验内容及要求l有有10个学生,每个学生的数据包括学号、个学生,每个学生的数据包括学号、姓名、姓名、3门课的成绩,从键盘输入门课的成绩,从键盘输入10个学个学生数据,要求打印出生数据,要求打印出3门课总平均成绩,门课总平均成绩,以及最高分的学生的数据。以及最高分的学生的数据。l 要求:用要求:用input函数输入函数输入10个学生数据,个学生数据,用用average 函数求总平均分;用函数求总平均分

5、;用max函数函数找出最高分的学生数据;总平均分和最高找出最高分的学生数据;总平均分和最高分学生的数据都在主函数中输出。分学生的数据都在主函数中输出。 实验内容及要求实验内容及要求讨论讨论l指出下列程序段的错误:lstruct studentllong num;lfloat score;lstruct student *next;la,b,c,*p;l a.next=&b;l b.next=&c;l p=a;l while (p)lprintf(“%ld%5.2f”,p-num,p-score);l P+;l 答:增加:c.next=NULL;p=a; =P=&a;P+; =P=p-next;

6、第二讲 线性表l教学目的与要求教学目的与要求 掌握数据结构中表的基本概念。 熟练掌握线性表的基本操作,插入、删除、查找等运算在顺序存储结构和链接存储结构上的实现。 熟练掌握链表的各种操作和应用。l教学的重点与难点教学的重点与难点线性表的基本操作在链接存储结构上的实现。实验预习检查内容l完成下列程序,指出完成下列程序,指出main的结构的结构l#include l#define MaxLen 50ltypedef int elemtype; struct datatype elemtype *elem; int length; typedef struct datatype sqlist ;lv

7、oid create (sqlist *a)llint i,n;la-elem=(elemtype *)malloc(MaxLen*sizeof(elemtype);lprintf(“创建一个顺序表创建一个顺序表n”););lprintf(“输入元素个数:输入元素个数:”););lscanf(“%d,&a-length);lfor (i=0;ilength;i+)ll printf(“输入第输入第%d个元素值:个元素值:”,i););l scanf(“%d,a-elem+i);lllvoid invert(sqlist *a)l lint m=a-length/2,I;lelemtype te

8、mp;lfor (I=0;Ielem+i)= ; l =temp; ll(1)*(a-elem+i)(2)*(a-elem+a-length-1-i)(3) )*(a-elem+a-length-1-i)lVoid disp(sqlist *a)l int I;lfor (i=0;ielem+i);llvoid main()llsqlist b,*a;la=&b;lcreate(a);ldisp(a);linvert(a);ldisp(a);l实验内容及要求实验内容及要求l4、7、13必做,其余老师选做几题必做,其余老师选做几题 l4、键盘输入学生信息(包括学号和、键盘输入学生信息(包括学号和

9、成绩),学号为成绩),学号为0作为结束标志,建作为结束标志,建立其对应的线性表并输出各结点中的立其对应的线性表并输出各结点中的数据。数据。l注:试以顺序表和单链表两种不同的注:试以顺序表和单链表两种不同的存储结构实现。存储结构实现。 l7、设计一个算法求、设计一个算法求A和和B两个单链表表示的集合的两个单链表表示的集合的并集。并集。l提示:将提示:将A和和B合并。合并。l9、用头插法把单链表、用头插法把单链表b中在单链表中在单链表a中未出中未出现的结点合并到单链表现的结点合并到单链表a中。中。 实验三实验三 栈和队列栈和队列 l教学目的与要求1. 了解栈和队列的特性,以便灵活应用。2. 熟练掌

10、握栈和有关队列的各种操作和应用。 l教学的重点与难点 栈和有关队列的各种操作和应用 实验预习检查内容l1、栈顶指针是栈顶元素的地址或是栈顶前、栈顶指针是栈顶元素的地址或是栈顶前一元素的地址一元素的地址,确定标准是什么确定标准是什么?答:由程序员自己确定,在压栈和弹栈操作时来实现2、在实际应用中,是采用一般队列还是、在实际应用中,是采用一般队列还是循环队列的依据是什么?循环队列的依据是什么?答:实际应用中,是否存在假溢出问题。实验内容及要求实验内容及要求l3、4必做,5选做l3、设一个算术表达式中包含圆括号、方括、设一个算术表达式中包含圆括号、方括号和花括号三种类型的括号,编写一个算号和花括号三

11、种类型的括号,编写一个算法判断其中的括号是否匹配。法判断其中的括号是否匹配。 l4、到医院看病的过程是,患者先排队等候,、到医院看病的过程是,患者先排队等候,排队过程中主要重复两件事:排队过程中主要重复两件事:l(1)病人到达诊室时,将病历交给护士,)病人到达诊室时,将病历交给护士,排到等候队列中候诊。排到等候队列中候诊。l(2)护士从等候队列中取出下一个患者的)护士从等候队列中取出下一个患者的病历,该患者进入诊室就诊。病历,该患者进入诊室就诊。l5、设计一个程序,演示用算符优先法对算术、设计一个程序,演示用算符优先法对算术表达式求值的过程。表达式求值的过程。l基本要求:以字符序列的形式从终端

12、输入语基本要求:以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。利用教法正确的、不含变量的整数表达式。利用教科书表科书表3.1给出的算符优先关系,实现对算术给出的算符优先关系,实现对算术四则混合运算表达式的求值,并仿照教科书四则混合运算表达式的求值,并仿照教科书的例的例3_1演示在求值中运算符栈、运算数栈、演示在求值中运算符栈、运算数栈、输入字符和主要操作的变化过程。输入字符和主要操作的变化过程。l测试数据:测试数据:3*(7-2)实验内容及要求实验内容及要求实验四实验四 串串 l教学目的与要求教学目的与要求1.掌握串的基本概念,存储方法及主要运算。2.将串的运算应用到文本编辑中。

13、l教学的重点与难点教学的重点与难点 子串的操作实验预习检查内容串的顺序存储结构包括哪两种存储方式?答:静态分配和动态分配的顺序存储结构。静态分配:typedef struct char chmaxstrlen; int length sstring;动态分配:typedef struct char *ch; int length; hsring;实验内容及要求实验内容及要求l3、4必做,5选做l3、采用顺序结构存储串,编写一个函数、采用顺序结构存储串,编写一个函数index(s1,s2),用于用于s2是否是是否是s1的子串。若是,的子串。若是,返回其在主串中的位置;否则返回返回其在主串中的位置

14、;否则返回-1。l4、利用串的基本运算,编写一个算法删除串、利用串的基本运算,编写一个算法删除串s1中所有中所有s2子串。子串。l提示:本题利用提示:本题利用3题的题的index()函数和删除子串函数和删除子串函数循环实现。函数循环实现。l5、已知、已知s=“(xyz)+*”,t=“(x+z)*y”。试利。试利用连接、求子串和置换等操作,将用连接、求子串和置换等操作,将 s转转化为化为t。 实验内容及要求实验内容及要求实验五实验五 数组和广义表数组和广义表 l教学目的与要求教学目的与要求 熟练掌握数组的存储表示和实现。 熟悉广义表的存储结构的特性。l教学的重点与难点教学的重点与难点 数组的存储

15、表示和常用操作的实现数组的存储表示和常用操作的实现 实验预习检查内容数组与一般线性表的区别?答:数组结构固定 数据元素同构为什么数组元素可以随机访问?答:可以通过地址计算公式来求得任意元素的地址实验内容及要求实验内容及要求l3、6必做l3、试设计一个算法,将、试设计一个算法,将A0.n-1中所有中所有奇数移到偶数之前。要求不另增加存储奇数移到偶数之前。要求不另增加存储空间,且时间复杂度为空间,且时间复杂度为O(n)。l提示:提示:i从左向右遍历,指向从左向右遍历,指向A左边的一左边的一个偶数,个偶数,j从右向左遍历,指向从右向左遍历,指向A右边的右边的一个奇数,然后将一个奇数,然后将Ai 与与

16、Aj交换。如交换。如此循环直到此循环直到i大于等于大于等于j。l6、稀疏矩阵运算器、稀疏矩阵运算器l基本要求:以基本要求:以“带行逻辑链接信息带行逻辑链接信息”的的三元组顺序表表示稀疏矩阵,实现两个三元组顺序表表示稀疏矩阵,实现两个矩阵相加、相减和相乘的运算。稀疏矩矩阵相加、相减和相乘的运算。稀疏矩阵的输入形式采用三元组表示,而运算阵的输入形式采用三元组表示,而运算结果的矩阵则以通常的阵列形式列出。结果的矩阵则以通常的阵列形式列出。实验内容及要求实验内容及要求实验六实验六 树树 l教学目的与要求l1.掌握二叉树,二叉树排序数的概念及存储方法。l2.掌握二叉树的遍历算法。l3.熟练掌握编写实现树的各种运算的算法。l教学的重点与难点 二叉树的遍历操作及其应用实验预习检查内容l1、下列程序段的功能是什么?、下列程序段的功能是什么?l2、二叉树的遍历常用哪些方式?、二叉树的遍历常用哪些方式?答:1、建立排序树2、先序、中序、后序、层次实验内容及要求实验内容及要求l3、4必做l3、编写程序,实现按层次遍历二叉树。、编写程序,实现按层次遍历二叉树。l4、编写程序,对二叉树进行先序遍历,、编写程序,

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

当前位置:首页 > IT计算机 > 数据结构与算法

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!