谢谢各位高手帮我看看这段程序的问题在哪里(单链接表示多项式乘法)

来源:百度知道 编辑:UC知道 时间:2024/06/18 10:21:59
题目:设计一个程序,实现两个一元多项式相加和相乘。
为简单起见,设一元多项式的系数和指数都为int类型。
一元多项式采用链接存储结构。

#include <stdio.h>
#include <malloc.h>
struct Node;
typedef struct Node *pNode;
struct Node
{
int info;
int power;
pNode next;
};
typedef struct Node *Linklist;
Linklist createEmptylist (void) //创建一个空链表
{
Linklist list=(Linklist)malloc(sizeof(struct Node));
if(list!=NULL)list->next=NULL;
else printf("Out of space!\n");
return (list);
}
int insertPostlink(Linklist list, pNode p,int x) //在链表中插入系数x
{
pNode q=(pNode)malloc(sizeof(struct Node));
if(q=NULL)
{
printf("Out of space!\n");
return (0);
}
else {
q->info=x;
q->next=p->next;
p->next=q;

return (1);
}
}
Linklist createList(Linklist list,int n,int j[]) //创建多项式
{
int m=0;

单步调试,问题就解决了.
我发现你至少在创建createlist中有错.
比如2次多项式,你的程序执行while循环4次,将输入4项,而不是正确的3项.

Linklist createList(Linklist list,int n,int j[]) //创建多项式
{
int m=0;
pNode p=list;
while(m <=n+1)
{
insertPostlink(list,p,j[m]);
p=p->next;
p->power=n-m;
m++;
}
return (list);
}