ch09_18.c
来自「C语言开发入门与编程实践 源码文件」· C语言 代码 · 共 108 行
C
108 行
#include <stdio.h>
#include <stdlib.h>
struct list /*声明列表结构*/
{
int coef,exp;
struct list *next;
};
typedef struct list node;
typedef node *link;
link creat_link(int data[4]);
void print_link(link head);
link sum_link(link a,link b);
int main()
{
link a,b,c;
int data1[4]={3,0,4,2}; /*多项式A的系数*/
int data2[4]={6,8,6,9}; /*多项式B的系数*/
printf("原始多项式:\nA=");
a=creat_link(data1); /*建立多项式A*/
b=creat_link(data2); /*建立多项式B*/
print_link(a); /*打印多项式A*/
printf("B=");
print_link(b); /*打印多项式B*/
printf("多项式相加结果:\nC=");
c=sum_link(a,b); /*C为A、B多项式相加结果*/
print_link(c); /*打印多项式C*/
system("pause");
return 0;
}
link creat_link(int data[4]) /*建立多项式子程序*/
{
int i;
link head,newnode,ptr;
for(i=0;i<4;i++)
{
newnode=(link)malloc(sizeof(node));
if(!newnode)
{
printf("Error!! 内存配置失败!!\n");
exit(i);
}
if(i==0)
{
newnode->coef=data[i];
newnode->exp=3-i;
newnode->next=NULL;
head=newnode;
ptr=head;
}
else if(data[i]!=0)
{
newnode->coef=data[i];
newnode->exp=3-i;
newnode->next=NULL;
ptr->next=newnode;
ptr=newnode;
}
}
return head;
}
void print_link(link head) /*打印多项式子程序*/
{
while(head!=NULL)
{
if(head->exp==1 && head->coef!=0) /*X^1时不显示指数*/
printf("%dX + ",head->coef);
else if(head->exp!=0 && head->coef!=0)
printf("%dX^%d + ",head->coef,head->exp);
else if(head->coef!=0) /*X^0时不显示变量*/
printf("%d",head->coef);
head=head->next;
}
printf("\n");
}
link sum_link(link a,link b) /*多项式相加子程序*/
{
int sum[4],i=0;
while(a!=NULL) /*判断多项式*/
{
while(b!=NULL)
{
if(a->exp==b->exp) /*指数相等,系数相加*/
{
sum[i]=a->coef+b->coef;
a=a->next;
b=b->next;
i++;
}
else if(b->exp > a->exp) /*B指数较大,指定系数给C*/
{
sum[i]=b->coef;
b=b->next;
i++;
}
else if(a->exp > b->exp) /*A指数较大,指定系数给C*/
{
sum[i]=a->coef;
a=a->next;
i++;
}
}
}
return creat_link(sum); /*建立相加结果列表C*/
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?