PHP Code:
thuật toán này bạn
#include"stdafx.h"
#include<conio.h>
#include<Windows.h>
#include<string.h>
#include<malloc.h>
#include<process.h>
typedef struct Data_type
{
int He_so;
int So_mu;
}Data;
typedef struct Tagnode
{
Data Info;
struct Tagnode *Next;
}*Node;
typedef struct Taglist
{
Node Head,Tail;
}List;
Node Getnode(Data x)
{
Node p;
p=(Node)malloc(sizeof(Node));
if(p==0)
{
printf("\nKhong du bo nho cap phat");
exit(1);
}
p->Info=x;
p->Next=0;
return p;
}
void Creat_list(List &l)
{
l.Head=l.Tail=0;
}
void Insert_node(List &l,Node p)
{
if(p==0)
{
printf("\nDu lieu nhap vao rong\n");
return;
}
if(l.Head==0)
{
l.Head=p;
l.Tail=l.Head;
}
else
{
l.Tail->Next=p;
l.Tail=p;
}
}
void Show(List &l)
{
Node p;
if(l.Head==0)
{
printf("\n0");
return;
}
else
{
p=l.Head;
while(p!=0)
{
if(p==l.Tail)
{
if(p->Info.So_mu==0)
printf("%d",p->Info.He_so);
else
printf("%d.X^%d",p->Info.He_so,p->Info.So_mu);
}
else
{
if(p->Info.So_mu==0)
printf("%d",p->Info.He_so);
else
printf("%d X^%d + ",p->Info.He_so,p->Info.So_mu);
}
p=p->Next;
}
}
}
void Print_list(List &l,List &l1,List &l2)
{
fflush(stdin);
system("cls");
printf("\nThuc hien phep tinh:\n\nDa thuc 1:\t");
Show(l1);
printf("\n+\nDa thuc 2:\t");
Show(l2);
printf("\n__________________________________\nKet qua: \t");
Show(l);
}
void Nhap_da_thuc(List *l, int i)
{
Data x;
Node p;
do
{
system("cls");
printf("\nNhap cho da thuc %d:",i);
printf("\nNhap he so:\t");
scanf_s("%d",&x.He_so);
printf("\nNhap so mu:\t");
scanf_s("%d",&x.So_mu);
p=Getnode(x);
Insert_node(*l,p);
printf("\nNhap cho toi khi he so va so mu bang 0. se thoat ham nhap....");
}
while((x.He_so!=0) || (x.So_mu!=0));
}
int Dem_nut(List &l)
{
Node p;
int i=0;
p=l.Head;
while(p!=0)
{
i++;
p=p->Next;
}
return i;
}
void Cong_da_thuc(List &l,List &l1,List &l2)
{
Data x;
Node p,q,k;
if(l1.Head==0)
{
if(l2.Head==0);
else
{
l.Head=l2.Head;
l.Tail=l2.Tail;
}
}
else
{
if(l2.Head==0)
{
l.Head=l1.Head;
l.Tail=l1.Tail;
}
else
{
if(Dem_nut(l1)>Dem_nut(l2))
{
p=l1.Head;
while(p!=0)
{
q=l2.Head;
while(q!=0)
{
if(p->Info.So_mu==q->Info.So_mu)
{
x.He_so=(p->Info.He_so+q->Info.He_so);
x.So_mu=p->Info.So_mu;
break;
}
q=q->Next;
}
if(q!=0)
{
k=Getnode(x);
Insert_node(l,k);
}
else
{
x.He_so=p->Info.He_so;
x.So_mu=p->Info.So_mu;
k=Getnode(x);
Insert_node(l,k);
}
p=p->Next;
}
}
else
{
p=l2.Head;
while(p!=0)
{
q=l1.Head;
while(q!=0)
{
if(p->Info.So_mu==q->Info.So_mu)
{
x.He_so=(p->Info.He_so+q->Info.He_so);
x.So_mu=p->Info.So_mu;
break;
}
q=q->Next;
}
if(q!=0)
{
k=Getnode(x);
Insert_node(l,k);
}
else
{
x.He_so=p->Info.He_so;
x.So_mu=p->Info.So_mu;
k=Getnode(x);
Insert_node(l,k);
}
p=p->Next;
}
}
}
}
}
void _tmain()
{
List l,l1,l2;
Creat_list(l1);
Nhap_da_thuc(&l1,1);
Creat_list(l2);
Nhap_da_thuc(&l2,2);
Creat_list(l);
Cong_da_thuc(l,l1,l2);
Print_list(l,l1,l2);
_getch();
}