文档详情

实验报告——2 一元稀疏多项式计算器.doc

发布:2017-04-29约4.66千字共12页下载文档
文本预览下载声明
PAGE  PAGE 12 华北水利水电学院 一元稀疏多项式计算器 实验报告 2010~2011学年 第 一 学期 09 级 计算机科学与技术 专业 班级: 2009119 学号: 200911902 姓名: 万婷婷 实验目的 设计一个医院稀疏多项式简单计算器 熟练掌握线性表的基本操作在两种存储结构上的实现,其中以各种链表的操作和应用 实验要求 输入并建立多项式 输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……cn,en,其中n是多项式的项数,ci,ei分别为第i项的系数和指数。序列按指数降序排列。 多项式a和b相加,建立多项式a+b,输出相加的多项式。 多项式a和b相减,建立多项式a-b,输出相减的多项式。 用带表头结点的单链表存储多项式。 测试数据: (1) (2x+5x8-3.1x11)+(7-5x8+11x9) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15) (3)(1+x+x2 +x3 +x4 +x5 )+( -x3- x4) (4)(x+x2+x3)+0 (5)(x+x3)-(-x-x-3) (6) (x+x2 +x3 )+0 三、实验内容 主要算法设计 typedef struct Node { float coef; int index; struct Node *next; }LinkList; 本程序涉及到多项式的建立、多项式的输出、两个多项式的相加减。 用带头结点的单链表存储多项式; 程序中共定义了5个函数: void Insert(LinkList *p,LinkList *h)//把节点p插入到链表h中 LinkList *Creat_L(LinkList *head,int m)//创建一个链表,项数为m void Printf(LinkList *L) LinkList *ADDlist(LinkList *head,LinkList *pb) LinkList *MinusList(LinkList *head,LinkList *pb) 四、程序源代码 #includeiostream.h #includemalloc.h #includestdio.h #includestdlib.h typedef struct Node { float coef; int index; struct Node *next; }LinkList; void Insert(LinkList *p,LinkList *h)//把节点p插入到链表h中 { LinkList *q1,*q2; int flag=0; q1=h; if(p-coef==0) free(p); else { if(q1-next==NULL) { q1-next=p; } else { q2=q1-next; while(flag==0) { if(p-indexq2-index) { if(q2-next==NULL) { q2-next=p; flag=1; } else { q1=q2; q2=q2-next; } } else if(p-indexq2-index) { p-next=q2; q1-next=p; flag=1; } else { q2-coef=p-coef+q2-coef; if(q2-coef==0) { q1-next=q2-next; free(q2); } flag=1; free(p); } } } } } LinkList *Creat_L(LinkList *head,int m)//创建一个链表,项数为m { int i; LinkList *q; head=(LinkList *)malloc(sizeo
显示全部
相似文档