下面是我写的程序,有错,望指点
#include <stdio.h>#include <stdlib.h>
//#include <malloc.h>
typedef struct node//结构体
{
int zhishu;//一元多项式指数
float xishu;//一元多项式系数
struct node *next;
}polynode,*linklist;
polynode *temp;
void crelist(polynode *l)//为链表分配空间
{
l=(linklist)malloc(sizeof(polynode));
l->next=NULL;
}
void distroylist(polynode *l)//销毁链表,回收空间
{
free(l);
}
void printlist(polynode *l)//输出链表
{
while (l!=NULL)
{
printf(" %fx^%d",l->xishu,l->zhishu);
l=l->next;
}
printf("\n");
}
void createlist(polynode *l)//创建链表并输入值
{
crelist(l);
do
{
printf("请输入多项式的系数和指数:\n");
scanf("%f,%d",l->xishu,l->zhishu);
l=l->next;
printf("继续输入?");
//getchar();
} while(getchar()!='n'||getchar()!='N');
}
polynode*addlist(polynode *s,polynode *p) //链表相加
{
float sum;
/* while (p==NULL)
{
temp=p;
p=p->next;
temp=temp->next;
}
while (s==NULL)
{
temp=s;
s=s->next;
temp=temp->next;
}*/
while(p!=NULL&&s!=NULL)
{
if (s->zhishu>p->zhishu)
{
temp=p;
p=p->next;
temp=temp->next;
}
if (s->zhishu<p->zhishu)
{
temp=s;
s=s->next;
temp=temp->next;
}
else
{
sum=s->xishu+p->xishu;
if(sum!=0)
{
temp->xishu=sum;
temp->zhishu=s->zhishu;
}
s=s->next;
p=p->next;
}
if (s->next==NULL)
{
temp=p;
p=p->next;
temp=temp->next;
}
if (p->next==NULL)
{
temp=s;
s=s->next;
temp=temp->next;
}
}
temp->next=NULL;
return temp;
}
int main()//主函数
{
polynode *m,*n;
createlist(m);
printf("输入成功!\n");
createlist(n);
printf("输入成功!\n");
addlist(m,n);
printlist(m);
printf("\n加上\n");
printlist(n);
printf("的结果是:\n");
printlist(temp);
distroylist(m);
distroylist(n);
return 0;
}