- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
98989
南昌航空大学实验报告
课程名称: 数据结构 实验名称: 实验二 线性表的链式存储结构
班 级: 080611 学生姓名: 学号: 08
指导教师评定: 签 名 :
题目: 设计并实现以下算法: 给出用单链表存储多项式的结构, 利用后接法生成多项式的
单链表结构,实现两个多项式相加的运算,并就地逆置相加后的多项式链式。
一、 需求分析
1. 用户可以根据自己的需求分别输入两个一元多项式, 并且能够实现输入的一元多项式的
显示。
能够完成两个一元多项式的相加功能,而且还能显示相加后的逆置的一元多项式。
程序执行的命令包括:
( 1)构造链表 A ( 2)构造链表 B (3)两个链表的相加 (4)求链表的长度
( 5)打印(显示)已有的链表 ( 6)将已相加的链表进行逆序排列
二、概要设计
⒈ 为实现上述算法,需要线性表的抽象数据类型:
ADT Polynomial {
数据对象: D={ai :|a i ∈ TermSet,i=1 , n,n ≥ 0
TermSet 中的每个元素包含一个表示系数的实数和表示指数的整数 }
数据关系: R1={<ai-1 ,a i >|a i-1 ,a i ∈ D, 且 ai-1 中的指数值 < a i 中的指数值
i=2, , n≥ 0}
基本操作 :
initlink(& L)
操作结果:构造一个空的链表 L。
Creatlink(&L,n)
操作结果:输入 n 项的系数和指数,建立一个非空的一元多项式 L。
LinkLength(L)
初始条件:链表 L 已经存在。
操作结果:返回一元多项式 L 中的项数。
Displaylink ( L)
初始条件:链表 L 已经存在。
操作结果:打印输出一元多项式 L。
Addpolyn(A,B,&C)
初始条件:一元多项式 A和 B 已存在。
操作结果:完成多项式相加运算,即: C=A+B,并且带回 C。
subtracypolyn(&La,&Lb,)
初始条件:一元多项式 La 和 Lb 已存在。
1
操作结果:完成多项式的相减运算 La=La+Lb,并且销毁多项式 Lb。
Multiplypolyn(&La ,&Lb)
初始条件:多项式 La, Lb 已经存在。
操作结果: 完成多项式的相乘运算, 即 La=La*Lb ,并销毁多项式 Lb。
Changlink ( L)
初始条件:一元多项式 L 已经存在。
操作结果:完成多项式的逆置功能,即将链表逆置。
}ADT Polynomial
本程序有三个模块:
⑴ 主程序模块
main(){
初始化;
{
接受命令;
显示结果;
}
}
⑵ 链表单元模块:实现链表抽象数据类型操作,即函数的定义模块;
三、详细设计
⒈元素类型,结点类型
typedef struct lnode
{ float num; int expn;
struct lnode *next;
}*linklist,lnode;
linklist initlink()
{ linklist p; p=(lnode*)malloc(sizeof(lnode));
p->next=null;
return p;
}
对抽象数据类型中的部分基本操作的伪码算法如下:
/* 创建一个非空链表 */
linklist creatlink(linklist p,float a[],int b[],int n)
{ linklist r,s; int i; r=p; for(i=0;i<n;i++)
{ s=(lnode*)malloc(sizeof(lnode));
s->num=a[i];
s->expn=b[i];
r->next=s;
r=s;
}
2
r->next=null;
return p;
}
/* 求链表的长度 */
int length(linklist p)
{ int n=0;
linklist q=p->next;
while(q!=null)
{ n++; q=q->next;
}
return n;
}
/* 显示链表 */
void display(linklist p)
{ int n=length(p),i; linklist q=p->next; if(n==0)
printf("The Polymial is null\n"); else if(n==1)
printf("%3.1f%3d",q->num,q->expn); else
{ for(i=1;i<n;i++)
{ printf("%3.1f%3d->",q->num,q->expn); q=q->next;
}
printf("%3.1f%3d",q->num,q->expn);
}
printf("\n");
1亿VIP精品文档
相关文档
最近下载
- 爱德利AS2系列变频器使用说明书.pdf
- 1000m3d农村污水处理站设计.docx
- HIKVISION海康威视K1T6QT-F71A系列人脸门禁一体机UD22243B_海康威视DS-K1T6QT-F71AM系列人脸识别终端_用户手册_V1.0_20201222.pdf
- 环保建筑对人体健康的影响.pptx
- 建筑装饰装修专项施工方案.doc VIP
- 丙烯酸生产工艺流程设计毕业论文.doc
- 《YY/T 1833.1-2022人工智能医疗器械 质量要求和评价 第1部分:术语》.pdf
- CO2气体保护焊作业指导书.doc
- Q/CR 482 高速铁路CRTSII型板式无砟轨道滑动层标准.pdf
- 采矿工程 山西省阳泉市盂县跃进煤矿矿井初步设计.doc VIP
文档评论(0)