- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
给大家的实验文档中分为一下几部分
1.实验准备:请好好复习C语言,有时间也复习一下C++。
2.c语言实验教案中是一些c语言的基础知识,包括VC环境的使用和程序的调试,希望对c语言已经忘记的同学好好看看复习一下。(程序的编写调试是长年累月的过程,需要不断的积累,写得多了,程序调试的多了,自然就熟练了)
3.对应的flash课件:其中是一些实验的flash课件演示,给大家做一下参考
4.实验指导书和实验教案大家在做每个实验前都需要看看。阅读的时候,可以使用【视图】|【文档结构图】,可以比较自由跳到相应位置
5. 总体实验难度比较大,时间紧,单靠实验课上的几个学时,作为初学者是无法完成的,需要大家在课前课后尽自己最大的努力。
6.每个实验的代码编写可以用c也可以用c++
7. 实验前要写预习报告,格式跟实验报告一致,实验结束后,可以直接在其上修改实验代码,加上实验小结,作为实验报告上交。实验报告必须手写!!代码部分可以只写关键代码。
实验安排
1、多项式加减法,2学时
2、栈和队列的应用,2学时
3、迷宫,4学时
4、二叉树的建立和遍历,4学时
5、归并排序,2学时
6、图,2学时
实验一 多项式加减法
一、实验目的
通过实现多项式的加减法,对链表有更深入的了解
二、实验内容
问题描述:
设计一个一元稀疏多项式简单的加减法计算器
实现要求:
一元稀疏多项式简单计算器的基本功能是:
(1)输入并建立多项式:
;
(2)输出多项式
(3)多项式A和B相加,建立多项式C=A+B,并输出相加的结果多项式C
(4)选作:多项式A和B相减,建立多项式C=A-B,并输出相加的结果多项式D
方法说明:
(1)多项式的输入与存储
用带表头结点的单链表存储多项式,链表中的每个节点分别存储多项式各项的系数和指数,即每从键盘输入多项式的一对数(系数,指数),可对应建立链表的一个结点。每个节点的结构为:
建立两个链表,其中pa和pb分别为它们的头指针:
Pa
pb
结果链表
Pa(或者是Pc)
Pc
(2)多项式数据类型的定义
struct tagNode
{
float coef;
int exp;
struct tagNode *next;
};
typedef struct tagNode Node;
typedef struct tagNode* pNode;
(3)主要算法
①创建两个链表,分别存放多项式1和多项式2,这两个链表中的节点是按指数降序或者升序排列的
②多项式相加或相减,下面给出多项式相加的部分实现
/*
下面的函数实现两个多项式的相加,要相加的链表分别由pa和pb指向(其中,pa,pb都是分配了空间的头结点)。
相加的结果直接由pa指向的链表保存,即是在pa链表中添加或删除(当系数因为相加为0的情况下)一些结点,构成结果。
这里要相加的链表中指数都是按从小到大的顺序排列好了的,是升序链表。
*/
void add_poly(Node *pa,Node *pb)
{
Node *p=pa-pNext;//链表1,将来的结果也放在此
Node *q=pb-pNext;//链表2
Node *pre=pa;
Node *u;//临时用
float x;
while (p!=NULL q!=NULL)//当两个链表都不为空
{
if (p-expq-exp)//比较链表1跟链表2当前节点的指数大小,链表1也是存放结果的地方
{
pre=p;
p=p-pNext;//p指向要比较的下一个结点。pre指向的是结果链表的最后一个结点。
}
else if (p-exp==q-exp)//假如链表1和链表2的指数相等,就要系数相加
{
x=p-coef+q-coef;
if (x!=0)//相加后的系数不为0,有必要保留一个结点就可以了
{
p-coef=x;
pre=p;
}
else//如果相加后,系数不是0,不需要保留任何一个结点,在这里删除链表1的结点,下面删除链表2的结点
{
pre-pNext=p-pNext;//保持链表1的连续性
free(p);
}
p=pre-pNext;//p指向要比较的下一个结点
//下面的代码是进行链表2结点的删除工作,因为指数相等,仅仅需要保留一个结点就可以了
//而结果直接保存在链表1中,所以,删除链表2的结点。
u=q;
q=q-pNext;
free(u);
}
else//如果链表2的当前节点指数小,那么要把链表2的当前节点加入到结果链表中(即是链表1)
{//相当于把
您可能关注的文档
- 教育心理学第三章学习理论汇总.ppt
- 教育信息化考试试题及答案汇总.doc
- 教育学的产生和发展汇总.ppt
- 教育学考试大纲汇总.doc
- 教育知识与能力:第一章汇总.ppt
- 旧城更新调研报告汇总.doc
- 改良清洁灌肠法汇总.ppt
- 救救濒危野生动物汇总.ppt
- 昆虫的繁殖方式汇总.ppt
- 改她是我的朋友汇总.ppt
- 2025至2030中国移动治疗台行业发展研究与产业战略规划分析评估报告.docx
- 2025至2030链激酶行业细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030爆炸物探测扫描仪行业市场占有率及有效策略与实施路径评估报告.docx
- 2025至2030四川省智能制造行业细分市场及应用领域与趋势展望研究报告.docx
- 2026届高三二轮复习试题政治大单元突破练1生产资料所有制与分配制度含解析.docx
- 2026届高三二轮复习试题政治大单元突破练16哲学基本思想与辩证唯物论含解析.docx
- 2026届高三二轮复习试题政治大单元突破练2社会主义市场经济体制含解析.docx
- 浙江省衢州市五校联盟2025-2026学年高二上学期期中联考技术试题-高中信息技术含解析.docx
- 浙江省金丽衢十二校2026届高三上学期11月联考政治试题含解析.docx
- 2026届高三二轮复习试题政治大单元突破练7领导力量:中国共产党的领导含解析.docx
原创力文档


文档评论(0)