数据结构《线性表的应用》实验报告

实验报告——线性表应用

一、实验目的

用单链表储存一元多项式,并实现两个多项式的相加运算。 二、实验内容

1. 先创建链表,存储多项式; 2. 输出多项式; 3. 两个多项式相加; 4. 输出多项式。

三、程序代码 #include #include #include

//一元多项式链式储存的节点结构 typedef struct Polynode {

float coef; int exp;

struct Polynode * next; } Polynode , * Polylist;

//建立一元多项式的链表 Polylist polycreate() {

Polynode * head,* rear,* s; float c; int e;

head=(Polynode* )malloc(sizeof(Polynode)); rear=head;

scanf(\ while(c!=0) {

s=(Polynode * )malloc(sizeof(Polynode)); s->coef=c; s->exp=e; rear->next=s; rear=s;

scanf(\ }

rear->next=NULL; return(head); }

//输出多项式

1

void print(Polynode*L) {

Polynode*p; p=L->next; printf(\ if(p&&p->coef!=0)

printf(\ while(p->next!=NULL) {

if((p->next->coef)>0&&p) printf(\ else printf(\ p=p->next;

printf(\ } }

//多项式相加

void polyadd(Polylist polya,Polylist polyb) {

Polynode*p,*q,*tail,*temp; int sum; p=polya->next; q=polyb->next; tail=polya;

while (p!=NULL&&q!=NULL) {

if(p->expexp)

{tail ->next=p; tail=p;p=p->next;} else if (p->exp==q->exp); {sum=p->coef+q->coef; if(sum!=0) {p->coef=sum; tail->next=p;tail=p; p=p->next;

temp=q;q=q->next;free(temp); } else {

temp=p;p=p->next;free(temp); temp=q;q=q->next;free(temp); } }

2

{tail ->next=q;tail=q; q=q->next;} }

if(p!=NULL) tail->next=p; else

tail->next=q; }

void main() {

Polynode*a,*b;

printf(\输入a的系数和指数:\\n\ a = polycreate(); print(a); printf(\

printf(\输入b的系数和指数:\\n\ b = polycreate(); print(b); printf(\ polyadd(a,b);

printf(\两个多项式的和为:\\n\ print(a); }

四、实验结果

五、实验过程中遇到的问题及处理方法

程序运行时,在中文状态下输入“,”回车后就不能再输入了,应在英文状态下输入“,”。

3

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4