数据结构实验,多项式计算器.docxVIP

  • 0
  • 0
  • 约1.18万字
  • 约 22页
  • 2024-03-02 发布于辽宁
  • 举报

实验题目:多项式运算器

实验内容:1、熟悉编程环境

2、用链式存储结构实现稀疏一元多项式运算器

实验目的和要求:

1、 通过本实验,掌握VC++6.0的基本使用,包括源程序的输入,编译运行及调试。调试的目的是找程序的运行错误,通过DEBUG菜单设置断点实现。

2、 用链式存储结构实现一元多项式的运算。

熟练掌握指针和链表的基本操作,利用菜单进行功能选择。

功能基本要求:创建、显示、求和、求差、求值、销毁、清空、修改

实验算法:

1、 数据结构描述:

输入的稀疏每一个多项式用一个链表存储,链表的每一个节点存储多项式的一个非零项。定义为LNode型结构体,其中保存该项的系数和指数。主函数中用一个数组存储每一个多项式的第一项的头指针以调用多项式。

2、 函数和算法描述:

主函数main定义LNode*数组a[]存储每一个多项式头节点的地址,并构建菜单以选择调用函数进行多项式的操作,对多项式进行操作的函数返回新改动的多项式头结点地址。

Createpolyn函数用以创建一个多项式,在用户输入结束指令之前,不断的申请空间,构建LNode型结点并加至构建的链表的表尾,输入结束指令之后,表尾设NULL并返回表头指针。

Printpolyn函数用以在屏幕上打印多项式,接收需要打印的多项式链表的头结点,构造循环体在表尾之前,不断以mxW格式打印对应结点中的数据。

Copypolyn函数用以复制多项式,接收需要复制的多项式a和复制位置b的指针,构造循环体,在a到表尾之前循环,在b对应的链表中构建新的结点,结点上的数据赋值为a中对应的值,返回b的头结点地址。

Addpolyn函数用以求两个已知多项式a、b的和存入c,先构建循环体,在a、b链表都未进行到表尾时,比较两个结点中的次数值,如果相同,将系数相加赋于c的当前结点,如果不同,将次数较小多项式y(a或b)的结点赋值给c当前结点,在将y链表向后推。

Subtract函数用以求两多项式的差,类似求和算法。

Value函数用以求一个多项式的值,接收x的值,构建循环体,在表尾之前循环以遍历多项式链表。内置循环体,以次数n为限循环,求出xW的值,乘以系数并将每一项的值叠加得值。

Destroypolyn函数用以销毁已有的多项式,将此多项式链表的空间FREE掉,返回空指针。

Clearpolyn函数用以清空多项式,构建循环体,将多项式的各项的系数、指数置零。

3、 时空分析:

L=sizeof(structLNode)

一个含有N项的多项式占用的储存空间为NL+1

主要函数的时间复杂度:(N项多项式)

Createpolyn:N

Printpolyn:N

Copypolyn:N

Addpolyn:N1+N2

实验结果:

控制菜单:

顶项项多多多式-7?式多多多健云制顼顼攻践『八SM创昱复争多冬销请幕

显示多项式:

多项式求值:

nu

4-5678y0

1224-567850

*

初1

项多

圭牙项项顼;式计多多多顶顶、践竺改H一多备」侣隼

-摩项^|^顶项项-多多农式亥^^夕s-^^mgft^js-复步多冬新请口『-a----------算一

_HWWW_X.,昂尊项项页沉式Tt1式务多多刑侦顶顶段一::一西I—IJ果M戋鬲宿修退

-摩项^顶项项i多多农式式式亥名夕』夕s-^^mgft^js-复步多冬新请4.-D----------

□1

求和、求差、复制、销毁、清空也均能得到正常结果

源代码:

#includestdio.h

#includestdlib.h

#defineN20

#defineLsizeof(structLNode)

structLNode

{

intn;

doublem;

structLNode*next;

};

structLNode*createpolyn(structLNode*p)

{

doublei=1;

intj,a=0;structLNode*u;

p=(structLNode*)malloc(L);

p-m=0;

p-n=0;

p-next=NULL;

u=p;

while(i!=0)

{

printf(-从低次到高次输入X的非零项的次数及系数:00表示结束:\n);

scanf(%d%lf,j,i);

if(i!=0){

p-next=(structLNode*)malloc(L);

p=p-next;

p-m=i;p-n=j;

}

};

p-next=NULL;

printf(completed!\n);

return(u);

}

voidprintpolyn(structLNode*p)

文档评论(0)

1亿VIP精品文档

相关文档