📄 sy2_3.c
字号:
/* 两个多项式链表相加sy2_3.c */
#include"sj.h"
#include<alloc.h>
typedef struct polynode /*定义多项式结构*/
{int coef;
int exp;
struct polynode *next; /*指针域 */
}PNode;
PNode creat_list(int n) /* 创建链式表 */
{ PNode *p,*head,*s;
int i;
head=(PNode *)malloc(sizeof(PNode));
p=head;
for(i=1;i<=n;i++)
{s=(PNode *)malloc(sizeof(PNode));
scanf("%d,%d",&s->coef,&s->exp);
s->next=NULL;
p->next=s;
p=s;
}
return (*head);
}/* creat_list */
void print(PNode *H) /* 输出结果 */
{PNode *p=H->next;
while(p->next)
{printf("%dx^%d+",p->coef,p->exp);
p=p->next; }
if(p->exp) printf("%dx^%d\n",p->coef,p->exp);
else printf("%d\n",p->coef);
}/* print */
void ployadd(PNode *pa,PNode *pb) /*多项式相加操作*/
{ PNode *qa,*qb,*q,*pre;int sum;
pre=pa;
qa=pa->next;qb=pb->next;
while(qa&&qb)
{ if(qa->exp==qb->exp) /*指数相等*/
{ sum=qa->coef+qb->coef;
if(sum) { qa->coef=sum;pre=qa; } /*所求系数不为0*/
else
{ pre->next=qa->next;free(qa);}
qa=pre->next;
q=qb;qb=qb->next;free(q);
}
else /*指数不相等*/
{ if(qa->exp>qb->exp)
{ pre=qa; qa=qa->next; }
else{ pre->next=qb;
pre=qb;
qb=qb->next;
pre->next=qa;}
}
}
if(qb) pre->next=qb;
free(pb);
}/* ployadd */
void main()
{PNode *HA,*HB;
int la,lb;
printf("输入两个多项式的项数:"); /* 输入多项式长度 */
scanf("%d,%d",&la,&lb);
printf("多项式A(X)的创建,输入格式为:coef,exp:\n");
*HA=creat_list(la);
printf("多项式B(X)的创建,输入格式为:coef,exp:\n");
*HB=creat_list(lb);
printf("A(X)=");
print(HA);
printf("B(X)=");
print(HB);
ployadd(HA,HB);
printf("相加结果A(X)+B(X)=");
print(HA);
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -