#include<stdlib.h>
#include<stdio.h>
struct List{
int coef;//系数
int expn;//幂
struct List * next;
};
typedef struct List * Link;
typedef struct List Lnode;
/*创建链表*/
Link create()
{
int a, n, i = 1;
Link head, s, p;
head = (Link)malloc(sizeof(Lnode));
head->next = NULL;
p = head;
do{
printf("\n第%d次->系数,幂:",i++);
scanf("%d %d", &a, &n);
if (a != 0 || n != 0)
{
s = (Link)malloc(sizeof(Lnode));
s->coef = a;
s->expn = n;
s->next = NULL;
p->next = s;
p = s;
}
} while (a != 0 || n != 0);
printf("\n");
return head->next;
}
/*进行相加操作*/
Link add(Link pa, Link pb)
{
int n;
Link pc, s, p;
pc = (Link)malloc(sizeof(Lnode));
pc->next = NULL;
p = pc;
while (pa != NULL&&pb != NULL)
{
if (pa->expn > pb->expn)
{
s = (Link)malloc(sizeof(Lnode));
s->coef = pa->coef;
s->expn = pa->expn;
s->next = NULL;
p->next = s;
p = s;
pa = pa->next;
}
else if (pa->expn < pb->expn)
{
s = (Link)malloc(sizeof(Lnode));
s->coef = pb->coef;
s->expn = pb->expn;
s->next = NULL;
p->next = s;
p = s;
pb = pb->next;
}
else
{
n = pa->coef + pb->coef;
if (n != 0)
{
s = (Link)malloc(sizeof(Lnode));
s->coef = n;
s->expn = pb->expn;
s->next = NULL;
p->next = s;
p = s;
}
pa = pa->next;
pb = pb->next;
}
}
while (pa != NULL)
{
s = (Link)malloc(sizeof(Lnode));
s->coef = pa->coef;
s->coef = pa->coef;
s->next = NULL;
p->next = s;
p = s;
pa = pa->next;
}
while (pb != NULL)
{
s = (Link)malloc(sizeof(Lnode));
s->coef = pb->coef;
s->coef = pb->coef;
s->next = NULL;
p->next = s;
p = s;
pb = pb->next;
}
return pc->next;
}
void display(Link head)
{
int first = 1;
Link p = head;
while (p != NULL)
{
if (first)//显示第一个结点时,不显示+号
{
if (p->expn == 1)
{
printf("%dx", p->coef);
}
else if (p->expn == 0)
{
printf("%d", p->coef);
}
else
{
printf("%dx^%d", p->coef, p->expn);
}
first = 0;
}
else//显示其他的结点,显示+号
{
if (p->expn == 1)
{
printf("+%dx", p->coef);
}
else if (p->expn == 0)
{
printf("+%d", p->coef);
}
else
{
printf("+%dx^%d", p->coef, p->expn);
}
}
p = p->next;
}
printf("\n");
}
int main()
{
Link Link1, Link2, Link3;
Link1 = create();
Link2 = create();
Link3 = add(Link1, Link2);
display(Link1);
display(Link2);
display(Link3);
system("pause");
return 0;
}
数据结构——两个一元多项式之和
最新推荐文章于 2022-10-17 19:27:03 发布