?? add.c
字號:
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct function)
struct function
{
int xishu;
int zhishu;
struct function *next;
};
struct function *input()
{
struct function *head,*p1,*p2;
int i,j;
head=(struct function*)malloc(LEN);
p1=head;
printf("請輸入系數i=\n指數j=\n 以逗號分割,若系數為0,則表示輸入結束\n");
scanf("%d,%d",&i,&j);
while(i!=0)
{
p2=(struct function*)malloc(LEN);
p2->xishu=i;
p2->zhishu=j;
p1->next=p2;
p1=p2;
printf("請輸入系數i=\n指數j=\n若系數為0,則表示輸入結束\n");
scanf("%d,%d",&i,&j);
}
p1->next=NULL;
head=head->next;
return(head);
}
struct function *add(struct function *head1,struct function *head2)
{
struct function *newhead,*pre,*q,*q1,*q2;
int addnumber;
q1=head1;
q2=head2;
newhead=(struct function*)malloc(LEN);
pre=newhead;
while(q1!=NULL&&q2!=NULL)
{
if(q1->zhishu==q2->zhishu)
{
addnumber=q1->xishu+q2->xishu;
if(addnumber!=0)
{
q=(struct function*)malloc(LEN);
q->xishu=addnumber;
q->zhishu=q1->zhishu;
pre->next=q;
pre=q;
}
q1=q1->next;
q2=q2->next;
}
else if(q1->zhishu<q2->zhishu)
{
q=(struct function*)malloc(LEN);
q->zhishu=q2->zhishu;
q->xishu=q2->xishu;
pre->next=q;
pre=q;
q2=q2->next;
}
else
{
q=(struct function*)malloc(LEN);
q->zhishu=q1->zhishu;
q->xishu=q1->xishu;
pre->next=q;
pre=q;
q1=q1->next;
}
}
while(q1!=NULL)
{
q=(struct function*)malloc(LEN);
q->zhishu=q1->zhishu;
q->xishu=q1->xishu;
pre->next=q;
pre=q;
q1=q1->next;
}
while(q2!=NULL)
{
q=(struct function*)malloc(LEN);
q->zhishu=q2->zhishu;
q->xishu=q2->xishu;
pre->next=q;
pre=q;
q2=q2->next;
}
pre->next=NULL;
q=newhead;
newhead=newhead->next;
free(q);
return(newhead);
}
void print(struct function *head)
{
struct function *p;
p=head;
if(head!=NULL)
{
do
{
printf("%3d,%3d;",p->xishu,p->zhishu );
p=p->next;
}while(p!=NULL);
}
}
void main()
{
struct function *heada,*headb,*headc;
heada=input();
printf("請輸入下一多項式\n");
headb=input();
headc=add(heada,headb);
print(headc);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -