Advertisement
toanroirac

Tích 2 đa thức - Danh sách liên kết đơn

Mar 28th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.50 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. typedef struct Polynomial{
  5.     int coeff;
  6.     int pow;
  7.     struct Polynomial *Next;
  8. }NODE;
  9.  
  10. typedef struct list{
  11.  NODE *pHead;
  12.  
  13. }LIST;
  14.  
  15. void Init(LIST &L){
  16.     L.pHead = NULL;
  17. }
  18.  
  19. NODE *Create_Node(int heso,int mu){
  20.     NODE *p;
  21.     p=(NODE *)malloc(sizeof(NODE));
  22.     if(p==NULL)
  23.         return NULL;
  24.     p->coeff = heso;
  25.     p->pow = mu;
  26.     p->Next=NULL;
  27.     return p;
  28. }
  29.  
  30. void Insert_Last(LIST &L,NODE *p)
  31. {
  32.     NODE *K;
  33.     K=(NODE*)malloc(sizeof(NODE));
  34.     K=L.pHead;
  35.     if(L.pHead==NULL)
  36.         L.pHead=p;
  37.     else{
  38.         while(K->Next!=NULL)
  39.             K=K->Next;
  40.         K->Next=p;
  41.         p->Next=NULL;
  42.     }
  43. }
  44.  
  45. void InPut(LIST &L){
  46.     int n, heso;
  47.     printf("Moi ban nhap vao so mu lon nhat cua da thuc : "); scanf("%d",&n);
  48.     for(int i=n;i>=0;i--){
  49.         printf("He so cua X^%d la : ",i);
  50.         scanf("%d",&heso);
  51.        
  52.         NODE *p;
  53.         p=Create_Node(heso,i);
  54.         Insert_Last(L,p);
  55.     }
  56. }
  57.  
  58. void Cong_Da_Thuc(LIST L1,LIST L2,LIST &L){
  59.     NODE *p,*q;
  60. //  p= (NODE*)malloc(sizeof(NODE));
  61. //  q= (NODE*)malloc(sizeof(NODE));
  62.     if(L1.pHead->pow > L2.pHead->pow){
  63.         L=L1;
  64.         p=L2.pHead;
  65.     }
  66.     else{
  67.         L=L2;
  68.         p=L1.pHead;
  69.     }
  70.     q=L.pHead;
  71.     while(q->pow > p->pow) q=q->Next;
  72.     while(q!=NULL){
  73.         q->coeff= q->coeff + p->coeff;
  74.         q= q->Next;
  75.         p=p->Next;
  76.     }
  77. }
  78.  
  79. void Tich_Hai_Da_Thuc(LIST &L1,LIST &L2,LIST &L){
  80.     NODE *p1,*p2,*p;
  81.     int a,b;
  82.     p=(NODE *)malloc(sizeof(NODE));
  83.     Init(L);
  84.     p1=L1.pHead;
  85.     while(p1!=NULL){
  86.         for(p2=L2.pHead;p2!=NULL;p2=p2->Next){
  87.             a= p1->coeff * p2->coeff;
  88.             b= p1->pow+p2->pow;
  89.             p=Create_Node(a,b);
  90.             Insert_Last(L,p);
  91.         }
  92.         p1=p1->Next;
  93.     }
  94. }
  95. void Ham_Rut_Gon_Tich(LIST L,LIST &R){
  96.     NODE *p=L.pHead;
  97.     int n,a=0;
  98.     printf("\nTong cua 2 so mu lon nhat la bao nhieu? n = "); scanf("%d",&n);
  99.     for(int i=0;i<=n;i++){
  100.         for(p=L.pHead;p!=NULL;p=p->Next){
  101.             if(p->pow==i){
  102.                 a= a + p->coeff;
  103.             }
  104.       }
  105.         NODE *q=Create_Node(a,i);
  106.         Insert_Last(R,q);
  107.         a=0;
  108.     }
  109.  
  110. }
  111. void OutPut(LIST L){
  112.     for(NODE *p=L.pHead;p!=NULL;p=p->Next){
  113.         printf("%d.X^%d",p->coeff,p->pow);
  114.         if(p->Next==NULL) break;
  115.         if(p->Next->coeff >= 0) printf(" + ");
  116.         else{
  117.             if(p->Next->coeff < 0)
  118.                 printf(" ");
  119.         }
  120.     }
  121. }
  122. int main(){
  123.     LIST L1,L2,L,R;
  124.     Init(L1);
  125.     Init(L2);
  126.     Init(L);
  127.     Init(R);
  128.     printf("Nhap da thuc P(x): \n");
  129.     InPut(L1); OutPut(L1);
  130.     printf("\nNhap da thuc Q(x): \n");
  131.     InPut(L2); OutPut(L2);
  132.     printf("\nTich hai da thuc da cho la: ");
  133.     Tich_Hai_Da_Thuc(L1,L2,L);
  134.     OutPut(L);
  135.     printf("\nSau khi rut gon ta co: ");
  136.     Ham_Rut_Gon_Tich(L,R);
  137.     OutPut(R);
  138.     getch();
  139.     return 0;
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement