AdminAdmin Tổng số bài gửi : 37Join date : 23/02/2012Age : 33 | Tiêu đề: Thuật toán cộng đa thức bằng danh sách liên kết đơn Wed Mar 07, 2012 1:50 am | | anh em xem giúp phát,ko chạy đúng đc,nó toàn bị mất mất phần tử thứ 2:( Code: #include<iostream>using namespace std;typedef struct {float heso;int somu;struct node *next;}dathuc;typedef struct node{dathuc infor;struct node *next;}*NODEPTR;void init(NODEPTR *L){(*L) =NULL;}NODEPTR getnode(void){NODEPTR p;p=(NODEPTR) malloc(sizeof(struct node));return p;}void add_top(NODEPTR *L,dathuc X){ NODEPTR p;p=getnode(); p->infor =X; p->next = (*L); (*L)=p;}void del_top(NODEPTR *L){ if((*L)!=NULL){ NODEPTR p=(*L); (*L)=(*L)->next; p->next=NULL; free(p); }}void travel(NODEPTR *L){NODEPTR p=(*L);while ( p != NULL){ cout<<p->infor.heso<<"x^"<<p->infor.somu<<" + "; del_top(L); p=p->next; }}NODEPTR L1=NULL,L2=NULL;void tong(dathuc P,dathuc Q){NODEPTR L3=NULL;while(L1 != NULL && L2 !=NULL){ if(L1->infor.somu > L2->infor.somu){ P=L1->infor; add_top(&L3,P); L1=L1->next; } else if(L1->infor.somu < L2->infor.somu){ Q=L2->infor; add_top(&L3,Q); L2=L2->next; } else if(L1->infor.somu == L2->infor.somu){ L1->infor.heso+=L2->infor.heso; P = L1->infor; add_top(&L3,P); L1 = L1->next; L2 = L2->next; } } if(L1!=NULL) L3->infor=L1->infor;if(L2!=NULL) L3->infor=L2->infor;while(L3!=NULL) travel(&L3);}main(){dathuc P,Q;int i=1,j=1,m,n;cout<<"\n nhap so so hang da thuc thu nhat: ";cin>>n;while(i<=n) { cout<<"\n nhap he so so thu "<<i<<" : ";cin>>P.heso; cout<<"\n nhap so mu so thu "<<i<<" : ";cin>>P.somu; add_top(&L1,P); i++; }cout<<"\n nhap so so hang da thuc thu hai: ";cin>>m;while(j<=m) { cout<<"\n nhap he so so thu "<<j<<" : ";cin>>Q.heso; cout<<"\n nhap so mu so thu "<<j<<" : ";cin>>Q.somu; add_top(&L2,Q); j++; }tong(P,Q);system("pause");} | | LikeDislike |
|