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

  • 格式:doc
  • 大小:153.00 KB
  • 文档页数:12

下载文档原格式

  / 12
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华北水利水电学院一元稀疏多项式计算器实验报告

2010~2011学年第一学期 09 级计算机科学与技术专业班级: 2009119 学号: 200911902 姓名:万婷婷

一、实验目的

设计一个医院稀疏多项式简单计算器

熟练掌握线性表的基本操作在两种存储结构上的实现,其中以各种链表的操作和应用

二、实验要求

a)输入并建立多项式

b)输出多项式,输出形式为整数序列:n,c

1,e

1

,c

2

,e

2

……c

n

,e

n

,其中n是多

项式的项数,c

i ,e

i

分别为第i项的系数和指数。序列按指数降序排列。

c)多项式a和b相加,建立多项式a+b,输出相加的多项式。

d)多项式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)

四、程序源代码

#include

#include

#include

#include

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->indexindex)

{

if(q2->next==NULL)

{

q2->next=p;

flag=1;

}

else

{

q1=q2;

q2=q2->next;

}

}

else

if(p->index>q2->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(sizeof(LinkList));

head->next=NULL;

for(i=1;i<=m;i++)

{

q=(LinkList *)malloc(sizeof(LinkList));

q->next=NULL;

printf("请输入第%d项的系数和指数:",i);

scanf("%f,%d",&q->coef,&q->index);

Insert(q,head);

}

return head;

}

void Printf(LinkList *L)

{

LinkList *p,*q,*pa;

int i=0;