线性表的综合应用
计算机软件技术基础实验报告

《计算机软件技术基础》实验报告专业_____________年级_____________学号_____________学生姓名_____________指导老师_____________南华大学计算机学院编I 实验要求1.每次实验中有若干习题,每个学生至少应该完成其中的两道习题。
2.上机之前应作好充分的准备工作,预先编好程序,经过人工检查无误后,才能上机,以提高上机效率。
3.独立上机输入和调试自己所编的程序,切忌抄袭、拷贝他人程序。
4.上机结束后,应整理出实验报告。
书写实验报告时,重点放在调试过程和小节部分,总结出本次实验中的得与失,以达到巩固课堂学习、提高动手能力的目的。
实验一线性表【实验目的】1.熟悉VC环境,学习如何使用C语言实现线性表的两种存储结构。
2.通过编程、上机调试,进一步理解线性表的基本概念,熟练运用C语言实现线性表基本操作。
3.熟练掌握线性表的综合应用问题。
【实验内容】必做:1.一个线性表有n个元素(n<MAXSIZE, MAXSIZE指线性表的最大长度),且递增有序。
(1)现有一元素x要插入到线性表的适当位置上,并保持线性表原有的顺序不变。
采用链式存储表示方法实现,设计程序实现(2)从单链表中删除指定的元素x,若x在单链表中不存在,给出提示信息。
要求:①指定的值x由键盘输入;②程序能处理空链表的情况。
选做:3.设有头结点的单链表,编程对表中的作一值只保留一个结点,删除其余值相同的结点。
要求:①该算法用函数(非主函数)实现;②在主函数中调用创建链表的函数创建一个单链表,并调用该函数,验证算法的正确性。
4.已知非空单链表第一个结点由head指出,请写一算法,交换p所指结点与其下一个结点在链表中的位置。
要求:①该算法用函数Reverse(head,p)实现,其中head为表头指针,p指向要交换的结点;②在主函数中调用创建链表的函数创建一个单链表,并调用该函数,验证算法的正确性。
408计算机学科专业基础综合考试大纲

408计算机学科专业基础综合考试大纲I考试性质计算机学科专业基础综合考试是为高等院校和科研院所招收计算机科学与技术学科的硕士研究生而设置的具有选拔性质的联考科目,其目的是科学、公平、有效地测试考生掌握计算机科学与技术学科大学本科阶段专业知识、基本理论、基本方法的水平和分析问题、解决问题的能力,评价的标准是高等院校计算机科学与技术学科优秀本科毕业生所能达到的及格或及格以上水平,以利于各高等院校和科研院所择优选拔,确保硕士研究生的招生质量。
II考查目标计算机学科专业基础综合考试涵盖数据结构、计算机组成原理、操作系统和计算机网络等学科专业基础课程。
要求考生比较系统地掌握上述专业基础课程的基本概念、基本原理和基本方法,能够综合运用所学的基本原理和基本方法分析、判断和解决有关理论问题和实际问题。
III考试形式和试卷结构一、试卷满分及考试时间本试卷满分为150分,考试时间为180分钟。
二、答题方式答题方式为闭卷、笔试。
三、试卷内容结构数据结构45分计算机组成原理45分操作系统35分计算机网络25分四、试卷题型结构单项选择题80分(40小题,每小题2分)综合应用题70分IV考查内容数据结构【考查目标】1.掌握数据结构的基本概念、基本原理和基本方法。
2.掌握数据的逻辑结构、存储结构及基本操作的实现,能够对算法进行基本的时间复杂度与空间复杂度的分析。
3.能够运用数据结构基本原理和方法进行问题的分析与求解,具备采用C或C++语言设计与实现算法的能力。
一、线性表(一)线性表的定义和基本操作(二)线性表的实现1.顺序存储2.链式存储3.线性表的应用二、栈、队列和数组(一)栈和队列的基本概念(二)栈和队列的顺序存储结构(三)栈和队列的链式存储结构(四)栈和队列的应用(五)特殊矩阵的压缩存储三、树与二叉树(一)树的基本概念(二)二叉树1.二叉树的定义及其主要特征2.二叉树的顺序存储结构和链式存储结构3.二叉树的遍历4.线索二叉树的基本概念和构造(三)树、森林1.树的存储结构2.森林与二叉树的转换3.树和森林的遍历(四)树与二叉树的应用1.二叉排序树2.平衡二叉树3.哈夫曼(Huffman)树和哈夫曼编码四、图(一)图的基本概念(二)图的存储及基本操作1.邻接矩阵法2.邻接表法3.邻接多重表、十字链表(三)图的遍历1.深度优先搜索2.广度优先搜索(四)图的基本应用1.最小(代价)生成树2.最短路径3.拓扑排序4.关键路径五、查找(一)查找的基本概念(二)顺序查找法(三)分块查找法(四)折半查找法(五)B树及其基本操作、B+树的基本概念(六)散列(Hash)表(七)字符串模式匹配(八)查找算法的分析及应用六、排序(一)排序的基本概念(二)插入排序1.直接插入排序2.折半插入排序(三)气泡排序(bubble sort)(四)简单选择排序(五)希尔排序(shell sort)(六)快速排序(七)堆排序(八)二路归并排序(merge sort)(九)基数排序(十)外部排序(十一)各种内部排序算法的比较(十二)排序算法的应用计算机组成原理【考查目标】1.理解单处理器计算机系统中各部件的内部工作原理、组成结构以及相互连接方式,具有完整的计算机系统的整机概念。
(完整版)数据结构实验教学手册

《数据结构》课程实验教学手册姓名:王俊东学号:1101120216专业:计算机科学与技术班级:2012 级 2 班任课教师:王爽时间:2013-2014 年度第1 学期综合成绩:许昌学院计算机科学与技术学院《数据结构》课程实验教学手册计算机科学与技术学院《数据结构》课程组实验手册使用及要求实验操作是教学过程中理论联系实际的重要环节,而实验报告的撰写又是知识系统化的吸收和升华过程,因此,实验报告应该体现完整性、规范性、正确性、有效性。
现将实验报告撰写的有关内容说明如下:1、实验预习报告必须在实验前完成。
2、实验时带好实验手册方可进行实验。
3、实验时按实验预习报告内容进行实验。
并如实填写实验过程及实验小结。
4、实验结束后填写通过后的源程序。
通过后的源程序可以手写也可以打印粘贴。
实验情况一览表实验一实验名称顺序表及其应用实验性质验证性实验学时数2学时printf("请选择正确的操作!\n");break;}}while(choice!=0);printf("谢谢使用!\n");return 0;}四实验小结初步了解线性表的顺序存储结构,及其定义格式。
掌握在顺序表上进行插入、删除等操作的算法。
但在顺序表的操作上不是十分熟练。
五成绩实验二实验名称单链表及其应用实验性质综合性实验学时数4学时四实验小结初步了解线性表的链式存储结构,及其定义格式。
掌握了在链表上进行插入、删除等操作的算法。
对链表的了解不是很深入,在其使用上往往会犯一些错误比如在链表中进行插入插不到指定位置,删除时位置错误等。
五成绩实验三实验名称线性表综合练习实验性质设计性实验学时数6学时四实验小结对链式表有了进一步的了解,能够利用链式表解决一些实际问题。
了解了链式表的优势,他不会造成空间的浪费,对于插入和删除操作上链式表比顺序表有明显的优势。
五成绩实验四实验名称栈和队列及其应用实验性质设计性实验学时数4学时四实验总结对栈和队列有了初步的了解,他们都是一种特殊的操作受限制线性表,栈的特点是先进后出而队列的是先进先出。
数据结构与算法课程总结

本课程的先修可称为离散数学和高级语言程序设计,后续课程为操作系统、数据库系统 原理和编译原理等。
数据结构中的存储结构及基本运算的实现需要程序设计的基本知识和编程能力和经验, 本课程大部分实例和实验均是用 C 语言实现的,故要求叫熟练地掌握 C 语言。 三、选用的教材及参考书
教材选用《数据结构与算法》,大连理工大学出版社,作者郭福顺、廖明宏等。参考书 为《数据结构(C 语言版》,清华大学出版社出版,严蔚敏、吴伟民编著。 四、教学内容
第六章 树 教学要求: 本章目的是二元树的定义、性质、存储结构、遍历、线索化,树的定义、存储结构、 遍历、树和森林与二元树的转换,哈夫曼树及其应用(优化判定过程和哈夫曼编码)等内容。 要求在熟悉这些内容的基础上,重点掌握二元树的遍历算法及其有关应用,难点是使用本章 所学到的有关知识设计出有效算法,解决与树或二元树相关的应用问题。 教学内容 1.树的概念(领会) 1.1 树的逻辑结构特征。 1.2 树的不同表示方法。 1.3 树的常用术语及含义。
数据结构实验课教案

数据结构实验课教案一、实验目的与要求1. 实验目的(1) 掌握数据结构的基本概念和算法。
(2) 培养实际操作能力,巩固课堂所学知识。
(3) 提高编程技能,为实际项目开发打下基础。
2. 实验要求(1) 严格按照实验指导书进行实验。
(2) 实验前认真预习,充分理解实验内容。
(3) 实验过程中积极思考,遇到问题及时解决。
(4) 按时完成实验,积极参与讨论与交流。
二、实验环境与工具1. 实验环境(1) 操作系统:Windows 7/8/10或Linux。
(2) 编程语言:C/C++、Java或Python。
(3) 开发工具:Visual Studio、Eclipse、IntelliJ IDEA或PyCharm。
2. 实验工具(1) 文本编辑器或集成开发环境(IDE)。
(2) 版本控制系统(如Git)。
(3) 在线编程平台(如LeetCode、牛客网)。
三、实验内容与安排1. 实验一:线性表的基本操作(1) 实现线性表的顺序存储结构。
(2) 实现线性表的插入、删除、查找等基本操作。
(3) 分析线性表的时间复杂度。
2. 实验二:栈与队列的基本操作(1) 实现栈的顺序存储结构。
(2) 实现队列的顺序存储结构。
(3) 实现栈与队列的进栈、出栈、入队、出队等基本操作。
(4) 分析栈与队列的时间复杂度。
3. 实验三:线性表的链式存储结构(1) 实现单链表的结构。
(2) 实现单链表的插入、删除、查找等基本操作。
(3) 分析单链表的时间复杂度。
4. 实验四:树与二叉树的基本操作(1) 实现二叉树的结构。
(2) 实现二叉树的遍历(前序、中序、后序)。
(3) 实现二叉搜索树的基本操作。
(4) 分析树与二叉树的时间复杂度。
5. 实验五:图的基本操作(1) 实现图的邻接矩阵存储结构。
(2) 实现图的邻接表存储结构。
(3) 实现图的深度优先搜索(DFS)和广度优先搜索(BFS)。
(4) 分析图的时间复杂度。
四、实验评价与成绩评定1. 实验评价(1) 代码质量:代码规范、注释清晰、易于维护。
计算机专业基础综合(线性表)-试卷1

计算机专业基础综合(线性表)-试卷1(总分:92.00,做题时间:90分钟)一、单项选择题(总题数:21,分数:42.00)1.单项选择题1-40小题。
下列每题给出的四个选项中,只有一个选项是最符合题目要求的。
(分数:2.00)__________________________________________________________________________________________ 解析:2.若某线性表中最常用的操作是在最后一个结点之后插入一个结点和删除第一个结点,则下面最节省运算时间的存储方式是( )。
(分数:2.00)A.单链表B.带有头指针的单循环链表C.双链表D.带有尾指针的单循环链表√解析:解析:在链表中的最后一个结点之后插入一个结点要知道终端结点的地址,所以,单链表、带有头指针的单循环链表、双链表都不合适。
考虑在带有尾指针的单循环链表中删除第一个结点,其时间性能是O(1),所以答案是D。
3.已知两个长度分别为l和s的降序链表,若将它们合并为一个长度为l+s的升序链表,则最坏情况下的时间复杂度是( )。
(分数:2.00)A.O(l)B.O(ls)C.O(min(l,s))D.O(max(l,s)) √解析:解析:在合并过程中,最坏的情况是两个链表中的元素依次进行比较,比较的次数最少是m和n中的最大值。
4.线性表中存放的主要是( )。
(分数:2.00)A.整型常量B.字符C.数据元素√D.信息元素解析:解析:线性表中主要存放的是数据元素,而数据元素可以是整型也可以是字符型,但对于一个线性表来说,所有的数据元素的类型必须相同。
5.下面的叙述中正确的是( )。
Ⅰ.线性表在链式存储时,查找第i个元素的时间同i的值成正比Ⅱ.线性表在链式存储时,查找第i个元素的时间同i的值无关Ⅲ.线性表在顺序存储时,查找第i个元素的时间同i的值成正比(分数:2.00)A.仅Ⅰ√B.仅ⅡC.仅ⅢD.Ⅰ、Ⅱ、Ⅲ解析:解析:在线性表链式存储结构中,查找第i个元素的时间与i的位置成正比。
哈尔滨学院数学与计算机学院教案
哈尔滨学院数学与计算机学院教案一、教案基本信息1.1 课程名称:数据结构与算法1.2 课程代码:051.3 课时安排:本学期共32课时,每周2课时1.4 授课对象:计算机科学与技术专业大一学生1.5 教学目标:(1)了解数据结构的基本概念及其在计算机科学中的应用;(2)掌握常见数据结构的实现和操作;(3)学会使用算法解决问题,提高编程能力。
二、教学内容2.1 引言2.1.1 数据结构的概念与发展历史2.1.2 数据结构在计算机科学中的应用2.1.3 算法与数据结构的关系2.2 线性表2.2.1 线性表的基本概念2.2.2 线性表的顺序存储结构2.2.3 线性表的链式存储结构2.2.4 线性表的基本操作2.3 栈与队列2.3.1 栈的基本概念及其应用2.3.2 队列的基本概念及其应用2.3.3 栈与队列的实现2.4 线性排序2.4.1 排序的基本概念2.4.2 冒泡排序算法2.4.3 选择排序算法2.4.4 插入排序算法2.4.5 快速排序算法2.5 综合练习2.5.1 线性表的综合练习2.5.2 栈与队列的综合练习2.5.3 线性排序的综合练习三、教学方法与手段3.1 教学方法(1)采用讲授法,系统讲解数据结构与算法的理论知识;(2)利用案例分析法,引导学生通过实际案例理解数据结构与算法的应用;(3)组织课堂讨论,培养学生的思维能力和创新能力。
3.2 教学手段(1)使用多媒体课件进行教学,提高教学效果;(2)利用编程软件,让学生动手实践,加深对数据结构与算法的理解;(3)布置课后练习,巩固所学知识。
四、教学评价4.1 平时成绩:占总评的30%,包括课堂表现、作业完成情况等;4.2 期中考试:占总评的40%,考察学生对数据结构与算法的基本知识和应用能力;4.3 期末考试:占总评的30%,全面测试学生的数据结构与算法知识掌握程度。
五、教学进度安排5.1 第1-4周:引言及线性表的教学;5.2 第5-8周:栈与队列的教学;5.3 第9-12周:线性排序的教学;5.4 第13-16周:综合练习及复习。
《数据结构》上机实验报告—约瑟夫环问题
《数据结构》上机实验报告
专业和班级:信息计算科学与应用数学6班
学号
姓名
成绩
实验名称
线性表结构及其应用
实验内容
约瑟夫环问题
实
验
目
的
和
要
求
【实验目的】
利用单向循环链表解决约瑟夫环问题,提高综合设计能力。
【基本要求】
利用单向循环链表存储结构模拟此过程,按归口炪列的顺序印出各人的编号.
问
题
描
i=1;
while(i<=n)
{
printf(”请输入第%d个人的密码:”,i);
scanf("%d",&pwd);
if(pwd〈= 0)continue;
Insert(L,pwd, i);
i++;
}
i = 1;
p = L-〉next;
while(L->next!= L)
{
q = p;
p = p->next;
【结果截图】
研
究
与
探
讨
解决约瑟夫环问题有三个算法:
一个是在顺序表上实现,另一个是在单向循环链表上实现,第三个则是利用循环队列的方式来实现。
说明:实验名称为教学大纲中各章的实验项目名称,实验内容为具体章节的实验内容名称
述
和
主
要
步
骤
【问题描述】
约瑟夫问题:编号为1,2,。。n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止.试设计一个程序求出出列顺序.
842计算机专业基础综合
附件2:中南民族大学2020年硕士研究生入学考试自命题科目考试大纲科目名称:计算机专业基础综合(数据结构、算法设计与分析、C语言程序设计)科目代码:842使用学科:计算机科学与技术、计算机技术………………………………………………………………………I.考试性质计算机专业基础综合是为招收计算机科学与技术学科、计算机技术的硕士研究生而设置的具有选拔性质的考试科目,其目的是科学、公平、有效地测试考生掌握计算机科学与技术学科大学本科阶段专业知识、基本理论、基本方法的水平和分析问题、解决问题的能力,评价的标准是高等院校计算机科学与技术学科优秀本科毕业生所能达到的及格或及格以上水平,确保硕士研究生的招生质量。
II.考查目标要求考生比较系统地掌握数据结构、算法设计与分析和C语言程序设计的基本概念、基本原理和基本方法,能够综合运用所学的基本原理和基本方法分析、判断和解决有关理论问题和实际应用问题。
III.考试形式和试卷结构1.试卷满分及考试时间本试卷满分为150分,考试时间为180分钟。
2.答题方式考试方式为闭卷、笔试。
3.试卷考查的题型及其比例单项选择题约40分简答题约30分综合分析题约50分算法设计题约30分IV.考查内容【考查目标】1.掌握数据结构、算法的基本概念、基本原理和基本方法。
2.掌握数据的逻辑结构、存储结构及基本操作的实现,能够对算法进行基本的时间复杂度与空间复杂度的分析。
3.能够运用数据结构、算法的基本原理和方法进行问题的分析与求解,具备采用C语言设计与实现算法的能力。
一、线性表(一)线性表的定义和基本操作(二)线性表的实现1.顺序存储2.链式存储3.线性表的应用二、栈、队列(一)栈和队列的基本概念(二)栈和队列的顺序存储结构(三)栈和队列的链式存储结构(四)栈和队列的应用三、串、数组(一)串的存储表示(二)串的模式匹配算法(三)数组的顺序存储(四)特殊矩阵的压缩存储四、树与二叉树(一)树的基本概念(二)二叉树1.二叉树的定义及其主要特征2.二叉树的顺序存储结构和链式存储结构3.二叉树的递归与非递归遍历4.线索二叉树的基本概念和构造(三)树、森林1.树的存储结构2.森林与二叉树的转换3.树和森林的遍历(四)树与二叉树的应用1.哈夫曼(Huffman)树和哈夫曼编码五、图(一)图的基本概念(二)图的存储及基本操作1.邻接矩阵法2.邻接表法3.邻接多重表、十字链表(三)图的遍历1.深度优先搜索2.广度优先搜索(四)图的基本应用1.最小(代价)生成树2.最短路径3.拓扑排序4.关键路径六、查找(一)查找的基本概念(二)线性表的查找1.顺序查找法2.折半查找法3.分块查找法(三)树表的查找1.二叉排序树2.平衡二叉树3.B-树4.B+树(四)散列(Hash)表的查找(五)查找算法的分析及应用七、排序(一)排序的基本概念(二)插入排序1.直接插入排序2.折半插入排序3.希尔排序(三)交换排序1.冒泡排序2.快速排序(四)选择排序1.简单选择排序2.堆排序(五)二路归并排序(六)基数排序(七)外部排序(八)各种排序算法的比较(九)排序算法的应用八、算法基础(一)算法的概念、特征(二)算法分析基础1.非递归算法的分析框架及应用2.递归算法的分析框架及应用3.三个渐进符号的意义及应用(三)算法设计技巧1.蛮力法(基本思想、具体应用)2.分治法(基本思想、具体应用)3.减治法(基本思想、具体应用)4.动态规划(基本思想、具体应用)5.贪心法(基本思想、具体应用)九、C语言程序设计部分(一)C语言基础知识1.C数据类型、表达式、输入输出2.选择控制结构、循环控制结构3.函数4.数组5.指针(二)C语言高级知识1.指针和数组2.指针和字符串3.结构体和共用体(三)文件操作参考书目:1.严蔚敏,李冬梅,吴伟民.数据结构(C语言版)(第2版).人民邮电出版社.20152.莱维汀著,潘彦译.算法设计与分析基础(第3版).清华大学出版社.20153.苏小红,王宇颖,孙志岗.C语言程序设计(第3版).高等教育出版社.2015。
第二章 指针与链表
第二章指针与链表一、静态存贮和动态存贮1、静态存贮程序中的变量一经说明,计算机操作系统就会在内存空间中分配相应的存贮单元,其中变量名是存贮单元的地址,而变量的值是存贮单元的内容,且该存贮单元自始至终都被该变量所占用,直到程序结束。
如果变量是局部变量,那么在它的作用域内,一经说明也占有一定的存贮单元,直到退出其作用域为止。
这样的变量,在程序执行过程中,不能随时使用随时分配存贮空间,也不能在程序执行的过程中,释放这些空间。
也就是说,一旦给这些变量分配存贮空间,无论程序是否还需要使用,它们都要占用一定的存贮空间,以便给用户存贮数据。
我们称具有这样特点的存贮为静态存贮,它所对应的变量称为静态变量。
如字符类型、数组类型、记录类型等。
这类变量的优点是存贮方便,查找容易,可以通过一个简单的公式随机存取表中的任一元素,逻辑关系上相邻的两个元素在物理位置上也是相邻的,很容易找到前趋与后继元素;缺点是在线性表的长度不确定时,必须分配足够大的存储空间,经常浪费了宝贵的存储资源;而线性表的容量一经定义确定后就难以扩充;在插入和删除线性表的元素时,需要移动大量的元素,时间效率也比较差。
2、动态存贮在程序执行过程中,通过向操作系统申请存贮空间或释放存贮空间的命令,达到动态管理计算机的存贮空间,以保证存贮空间的充分利用。
存贮空间可以随时申请、随时释放,这样的存贮方式称为动态存贮,其变量称为动态变量。
指针变量即为动态变量。
动态存储所需要的空间可以是不连续的,这样有利于充分利用零散的小空间。
但缺无法用O(1)的时间实现存取了。
如何用这些零散的空间存储数组这些大规模数据呢?如何表示这些数据之间的逻辑关系呢?为了表示这些物理存储单元之间的逻辑关系,对于每个数据元素来说,除了要存储它本身的信息(数据域data)外,还要存储它的直接后继元素的存储位置(指针域,一般用link 或next 表示)。
我们往往把这两部分信息合在一起称为一个“结点node”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
return head;
}
//销毁多项式算法
void DestroyPloyn(LinkList *L)
{ LinkList *p,*r;
p=L->next;
while(p!=NULL)
{ r=p->next;free(p);
p=r;
}
free(L);
}
//输出多项式算法
void PrintPloyn(LinkList *L)
int PloynLength(LinkList *L)
{ LinkList *p;
int n=0;
p=L->next;
while(p)
{ n++;p=p->next;
}
return n;
}
//主函数
void main()
{ LinkList *P1,*P2;
char ch;
printf("Please Input You Want:");
case '-': Substract(P1,P2);break;
case '*': break;
default : printf("ERROR!!!\n");
}
printf("This Ployn Length is:%d\n",PloynLength(P1));
switch(ch)
{ case '+': printf("P1+P2=");break;
四、实验内容:实现一元稀疏多项式的表示及基本操作(建立,销毁,输出,加法,减法,求项数等操作);一元多项式一定要包含系数项和指数项的描述,对一元多项式的基本运算,可应用两个有序链表合并的思想进行。
五、实验环境(使用的软硬件):利用Visual C++集成开发环境进行本实验操作。
六、实验步骤及操作:
1.“建立多项式算法”操作结果:输入m项的系数和指数,建立一个一元多项式P
(3) (x+x2+x3)+0
(4) (x+x3)-(-x-x3)
程序测试:
说明:以系数项为0作为建立一元多项式的结束标志,’\n’代表键盘上的回车
(1)编译程序,无显示错误。继续运行
(2)输入:1)+
2)2’\n’1’\n’5’\n’8’\n’-3.1’\n’11’\n’0’\n’7’\n’0’\n’5’\n’8’\n’11’\n’9’\n’0’\n’
指导教师签字:批阅日期:注意: Nhomakorabea实验报告以纸质文档形式上交。实验报告将记入平时成绩;
每次实验开始时,交上一次的实验报告,否则将扣除此次实验成绩。
scanf("%f",&a);
while(a!=0)
{ scanf("%d",&n);
p=(LinkList *)malloc(sizeof(LinkList));
p->coef=a;p->expn=n;p->next=NULL;
r->next=p;r=r->next;
scanf("%f",&a);
scanf("%c",&ch);
P1=GreatePloyn();P2=GreatePloyn();
printf("P1=");PrintPloyn(P1);
printf("P2=");PrintPloyn(P2);
switch(ch)
{ case '+': AddPloyn(P1,P2);break;
{ LinkList *p;
p=L->next;
while(p!=NULL)
{ printf("%6.2fX%d",p->coef,p->expn);
p=p->next;
if(p!=NULL) printf("+");
}
printf("\n");
}
//多项式加法
void AddPloyn(LinkList *A,LinkList *B)
//建立多项式算法
LinkList *GreatePloyn()
{ LinkList *p,*head,*r;
float a;int n;
head=(LinkList *)malloc(sizeof(LinkList));
head->next=NULL;r=head;
printf("Please Input One Ployn:\n");
}
}
if(q!=NULL) s->next=q;
DestroyPloyn(B);
}
//多项式减法算法
void Substract(LinkList *A,LinkList *B)
{ LinkList *p,*q,*s,*r;
float t;
p=A->next;q=B->next;s=A;B->next=NULL;
闽江学院电子系
实验报告
学生姓名:曹韦
班级:
学号:3142731
课程:数据结构与算法
一、实验题目:线性表的综合应用
二、实验地点:计算机软件与网络实验室-实验楼A210
三、实验目的:1.掌握顺序表和链表的概念,学会对问题进行分析,选择恰当的逻辑结构和物理结构;
2.加深对顺序表和链表的理解,培养解决实际问题的编程能力。
(3)输出:
八、实验总结及心得体会:
本实验需要一定的编程能力,和对问题的分析能力,以及解决问题的。它需用把理论变为上机调试,对我们初学者无疑是一个巨大的挑战。但在用心对待,调试成功的那一刻,有很强的兴奋感和战胜欲。
九、对本实验过程及方法、手段的改进建议:
本实验我对“销毁多项式算法”并不是很理解。
报告评分:
2.“销毁多项式算法”初始条件:一元多项式P已存在;操作结果:销毁一元多项式P
3.“输出多项式算法”初始条件:一元多项式P已存在;操作结果:打印一元多项式P
4.“多项式加法算法”初始条件:两个多项式的Pa,Pb已存在;操作结果:Pa=Pa+Pb,并销毁Pb
5.“多项式减法算法”初始条件:两个多项式的Pa,Pb已存在;操作结果:Pa=Pa-Pb,并销毁Pb
case '-': printf("P1-P2=");break;
case '*': break;
default : printf("ERROR!!!\n");
}
PrintPloyn(P1);
}
测试数据为:
(1)(2x+5x8-3.1x11)+(7-5x8+11x9)
(2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15)
{ LinkList *p,*q,*s,*r;
float t;
p=A->next;q=B->next;s=A; B->next=NULL;
while((p!=NULL)&&(q!=NULL))
{ if(p->expn > q->expn){ r=q->next;q->next=p;
s->next=q;s=q; q=r;
else{ s->next=p->next;free(p); }
p=s->next;r=q;
q=q->next; free(r);
}
}
if(q!=NULL) {s->next=q;
while(q){q->coef=-q->coef; q=q->next;}
} DestroyPloyn(B);
}
//求多项式项数的算法
6.“求多项式项数的算法”初始条件:一元多项式P已存在;操作结果:返回P中的项数;
七、实验结果:
程序如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{ float coef;int expn;
struct node *next;
}LinkList;
while(p&&q)
{ if(p->expn > q->expn){ r=q->next;q->next=p;
s->next=q;s=q; q=r;
}
else if(p->expn < q->expn){s=p;p=p->next; }
else{ t=p->coef - q->coef;
if(t!=0) { p->coef=t;s=p; }
}
else if(p->expn < q->expn){s=p;p=p->next; }
else{ t=p->coef + q->coef;
if(t!=0) { p->coef=t;s=p; }
else{ s->next=p->next;free(p); }
p=s->next;r=q;
q=q->next; free(r);