FIFA-2022 Career Guide Free Tutorials Go to Your University Placement Preparation 
0 like 0 dislike
6.3k views
in VTU B.Tech (CSE-III Sem) Data Structure Lab by Goeduhub's Expert (7.6k points)

Design, Develop and Implement a Program in C for the following operations on Singly Linked List

  • Find the sum of two polynomials

1 Answer

0 like 0 dislike
by Goeduhub's Expert (7.6k points)
edited by
 
Best answer

Design, Develop and Implement a Program in C for the following operations on Singly Linked List Find the sum of two polynomials

Given two polynomial numbers represented by a linked list. Write a function that add these lists means add the coefficients who have same variable powers.

Example:

Input:
     1st number = 5x2 + 4x1 + 2x0
     2nd number = 5x1 + 5x0
Output:
        5x2 + 9x1 + 7x0
Input:
     1st number = 5x3 + 4x2 + 2x0
     2nd number = 5x1 + 5x0
Output:
        5x3 + 4x2 + 5x1 + 7x0

Program

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

struct Node 

    int coeff; 

    int pow; 

    struct Node *next; 

};               

// Function to create new node 

void create_node(int x, int y, struct Node **temp) 

    struct Node *r, *z; 

    z = *temp; 

    if(z == NULL) 

    { 

        r =(struct Node*)malloc(sizeof(struct Node)); 

        r->coeff = x; 

        r->pow = y; 

        *temp = r; 

        r->next = (struct Node*)malloc(sizeof(struct Node)); 

        r = r->next; 

        r->next = NULL; 

    } 

    else

    { 

        r->coeff = x; 

        r->pow = y; 

        r->next = (struct Node*)malloc(sizeof(struct Node)); 

        r = r->next; 

        r->next = NULL; 

    } 

}   

// Function Adding two polynomial numbers 

void polyadd(struct Node *poly1, struct Node *poly2, struct Node *poly) 

while(poly1->next && poly2->next) 

    { 

        // If power of 1st polynomial is greater then 2nd, then store 1st as it is 

        // and move its pointer 

        if(poly1->pow > poly2->pow) 

        { 

            poly->pow = poly1->pow; 

            poly->coeff = poly1->coeff; 

            poly1 = poly1->next; 

        }   

        // If power of 2nd polynomial is greater then 1st, then store 2nd as it is 

        // and move its pointer 

        else if(poly1->pow < poly2->pow) 

        { 

            poly->pow = poly2->pow; 

            poly->coeff = poly2->coeff; 

            poly2 = poly2->next; 

        } 

          // If power of both polynomial numbers is same then add their coefficients 

        else

        { 

            poly->pow = poly1->pow; 

            poly->coeff = poly1->coeff+poly2->coeff; 

            poly1 = poly1->next; 

            poly2 = poly2->next; 

        }    

        // Dynamically create new node 

        poly->next = (struct Node *)malloc(sizeof(struct Node)); 

        poly = poly->next; 

        poly->next = NULL; 

    } 

while(poly1->next || poly2->next) 

    { 

        if(poly1->next) 

        { 

            poly->pow = poly1->pow; 

            poly->coeff = poly1->coeff; 

            poly1 = poly1->next; 

        } 

        if(poly2->next) 

        { 

            poly->pow = poly2->pow; 

            poly->coeff = poly2->coeff; 

            poly2 = poly2->next; 

        } 

        poly->next = (struct Node *)malloc(sizeof(struct Node)); 

        poly = poly->next; 

        poly->next = NULL; 

    } 

}  

// Display Linked list 

void show(struct Node *node) 

while(node->next != NULL) 

    { 

    printf("%dx^%d", node->coeff, node->pow); 

    node = node->next; 

    if(node->next != NULL) 

        printf(" + "); 

    } 

}  

int main() 

    struct Node *poly1 = NULL, *poly2 = NULL, *poly = NULL;    

    // Create first list of 5x^2 + 4x^1 + 2x^0 

    create_node(5,2,&poly1); 

    create_node(4,1,&poly1); 

    create_node(2,0,&poly1);   

    // Create second list of 5x^1 + 5x^0 

    create_node(5,1,&poly2); 

    create_node(5,0,&poly2);   

    printf("1st Number: ");  

    show(poly1); 

    printf("\n2nd Number: "); 

    show(poly2);     

    poly = (struct Node *)malloc(sizeof(struct Node));      

    // Function add two polynomial numbers 

    polyadd(poly1, poly2, poly);    

    // Display resultant List 

    printf("\nAdded polynomial: "); 

    show(poly);   

return 0; 

}  

Output

image 


For more Visvesvaraya Technological University(VTU) CSE-III Sem Data Structure Lab Experiments Click Here


Learn & Improve In-Demand Data Skills Online in this Summer With  These High Quality Courses[Recommended by GOEDUHUB]:-

Best Data Science Online Courses[Lists] on:-

Claim your 10 Days FREE Trial for Pluralsight.

Best Data Science Courses on Datacamp
Best Data Science Courses on Coursera
Best Data Science Courses on Udemy
Best Data Science Courses on Pluralsight
Best Data Science Courses & Microdegrees on Udacity
Best Artificial Intelligence[AI] Courses on Coursera
Best Machine Learning[ML] Courses on Coursera
Best Python Programming Courses on Coursera
Best Artificial Intelligence[AI] Courses on Udemy
Best Python Programming Courses on Udemy

Related questions

 Important Lists:

Important Lists, Exams & Cutoffs Exams after Graduation PSUs

 Goeduhub:

About Us | Contact Us || Terms & Conditions | Privacy Policy ||  Youtube Channel || Telegram Channel © goeduhub.com Social::   |  | 

 

Free Online Directory

...