算法与数据结构实验一元多项式求和

发布时间 : 星期三 文章算法与数据结构实验一元多项式求和更新完毕开始阅读

《算法与数据结构》实验报告

姓名:章帆

班级:计科01

学号:1105090123

实验题目:链表的应用

实验内容:一元多项式求和

把任意给定的两个一元多项式P(x) ,Q(x) 输入计算机,计算它们的和并输出计算结果。

设计分析:

一元多项式可以用单链表表示,结点结构图示如下:

coef exp next

一元多项式链表的结点结构

一元多项式算法伪代码如下:

1. 工作指针p、q初始化;

2. while(p存在且q存在)执行下列三种情形之一

2.1 如果p->expexp,则指针p后移; 2.2 如果p->exp>q->exp,则 2.2.1 将结点q插入到结点p之前; 2.2.2 指针q指向原指结点的下一个结点;

2.3 如果p->exp=q->exp,则

2.3.1 p->coef =p->coef+q->coef; 2.3.2 如果p->coef ==0,则执行下列操作,否则,指针p后移; 2.3.2.1 删除结点p; 2.3.2.2 使指针p指向它原指结点的下一个结点; 2.3.3 删除结点q; 2.3.4 使指针q指向它原指结点的下一个结点; 3. 如果q不为空,将结点q链接在第一个单链表的后面; 源程序代码:

#include \ #include typedef struct LNode {

int x,z;

struct LNode *next;

}LinkList;

void OutLinkList(LinkList *L); void PutLinkList(LinkList *&L,int n);

LinkList *AddLinkList(LinkList *a,LinkList *b);

void OutXLinkList(LinkList *L); void OutZLinkList(LinkList *L); void main() { }

void PutLinkList(LinkList *&L,int n) {

LinkList *s,*r;

L=(LinkList *)malloc(sizeof(LinkList)); r=L;

for(int i=0;i

r->next=NULL;

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

printf(\请?输o?入¨?第ì¨2%d项?的ì?系|ì数oy:êo\,i+1); scanf(\,&s->x);

printf(\请?输o?入¨?第ì¨2%d项?的ì?指?数oy:êo\,i+1); scanf(\,&s->z); r->next=s; r=s; int n,m;

LinkList *a,*b,*c;

printf(\本à?程¨?序¨?可¨|以??完a¨o成¨|两¢?个?一??元a多¨¤项?式o?的printf(\请?输o?入¨?一??元a多¨¤项?式o?a的ì?项?数oym:êo\); scanf(\,&m);

printf(\请?按???照?从?¨?低ì¨a次??到ì?高?次??的ì?顺3序¨?依?¨¤此??输o?入¨?PutLinkList(a,m); printf(\); OutLinkList(a);

printf(\请?输o?入¨?一??元a多¨¤项?式o?b的ì?项?数oyn:êo\); scanf(\,&n);

printf(\请?按???照?从?¨?低ì¨a次??到ì?高?次??的ì?顺3序¨?依?¨¤此??输o?入¨?PutLinkList(b,n); printf(\); OutLinkList(b); c=AddLinkList(a,b);

printf(\两¢?个?多¨¤项?式o?的ì?和¨a为a:êo\\na+b=\); OutLinkList(c);

ì?加¨?法¤?§运?算?。?ê\\n\);

一??元a多¨¤项?式o?a的ì?系|ì数oy和¨a指?数oy:êo\\n\);

一??元a多¨¤项?式o?b的ì?系|ì数oy和¨a指?数oy:êo\\n\);

}

void OutLinkList(LinkList *L) { }

void OutXLinkList(LinkList *L) { }

void OutZLinkList(LinkList *L) {

if(L->z==0)

;

int xi=L->x>0? L->x:-L->x; if(L->x==1||L->x==-1)

;

printf(\,xi); else char FuHao;

LinkList *p=L->next; FuHao=p->x>0? '+':'-'; if(FuHao=='-') { }

OutXLinkList(p); OutZLinkList(p); p=p->next; while(p!=NULL) { }

printf(\);

FuHao=p->x>0? '+':'-'; printf(\,FuHao); OutXLinkList(p); OutZLinkList(p); p=p->next;

printf(\,FuHao); if(p->x==-1)

printf(\);

联系合同范文客服:xxxxx#qq.com(#替换为@)