Untitled
unknown
plain_text
4 years ago
5.7 kB
4
Indexable
#include<stdio.h> #include<stdlib.h> struct node { int data; struct node *next; }; struct node *front; struct node *rear; void push(); void pop(); void display(); void top(); int isEmpty(); int size(); int main () { int choice = 0; while(choice != 7) { int sz =0, flag=0; printf("\nMain Menu\n"); printf("\n1.push an element\n2.pop an element\n3.top value\n4.Display the queue\n5.size\n6.isEmpty\n7.Exit"); printf("\nEnter your choice : "); fflush(stdin); scanf("%d",&choice); switch(choice) { case 1: display(); push(); display(); break; case 2: display(); pop(); display(); break; case 3: top(); break; case 4: display(); break; case 5: { sz = size(); printf("Size of queue is: %d \n", sz); break; } case 6: { flag = isEmpty(); if(flag == 1) printf("queue is empty. \n"); else printf("queue is not empty. \n"); break; } default: printf("\nEnter valid choice : \n"); } } return 0; } void push() { struct node *ptr; int item; ptr = (struct node *) malloc (sizeof(struct node)); if(ptr == NULL) { printf("\nOVERFLOW\n"); return; } else { printf("\nEnter value : "); scanf("%d",&item); ptr -> data = item; if(front == NULL) { front = ptr; rear = ptr; front -> next = NULL; rear -> next = NULL; } else { rear -> next = ptr; rear = ptr; rear->next = NULL; } } } void pop() { struct node *ptr; if(front == NULL) { printf("\nUNDERFLOW\n"); return; } else { ptr = front; front = front -> next; free(ptr); } } void display() { struct node *ptr; ptr = front; if(front == NULL) { printf("\nEmpty queue\n"); } else { printf("\nValues are : \n"); while(ptr != NULL) { printf("\n%d\n",ptr -> data); ptr = ptr -> next; } } } void top() { struct node *ptr; ptr = front; if(front == NULL) { printf("\nEmpty queue\n"); } else printf("\n%d\n",ptr -> data); } int size() { int cnt = 0; struct node* ptr; ptr = front; while(ptr != NULL) { cnt++; ptr = ptr -> next; } return cnt; } int isEmpty() { int flag = 0; if(front == NULL) flag = 1; else flag = 0; return flag; } //polynomial #include<stdio.h> #include<stdlib.h> struct Node { int coeff; int pow; struct Node* next; }; void readPolynomial(struct Node** poly) { int coeff, exp, cont; struct Node* temp = (struct Node*)malloc(sizeof(struct Node)); *poly = temp; do{ printf("\n Coeffecient: "); scanf("%d", &coeff); printf("\n Exponent: "); scanf("%d", &exp); temp->coeff = coeff; temp->pow = exp; temp-> next = NULL; printf("\nHave more terms? 1 for y and 0 for no: "); scanf("%d", &cont); if(cont) { temp->next = (struct Node*)malloc(sizeof(struct Node)); temp = temp->next; temp->next = NULL; } }while(cont); } void displayPolynomial(struct Node* poly) { printf("\nPolynomial expression is: "); while(poly != NULL) { printf("%dX^%d", poly->coeff, poly->pow); poly = poly->next; if(poly != NULL) printf("+"); } } void addPolynomials(struct Node** result, struct Node* first, struct Node* second) { struct Node* temp = (struct Node*)malloc(sizeof(struct Node)); temp->next = NULL; *result = temp; while(first && second) { if(first->pow > second->pow) { temp->coeff = first->coeff; temp->pow = first->pow; first = first->next; } else if(first->pow < second->pow) { temp->coeff = second->coeff; temp->pow = second->pow; second = second->next; } else { temp->coeff = first->coeff + second->coeff; temp->pow = first->pow; first = first->next; second = second->next; } if(first && second) { temp->next = (struct Node*)malloc(sizeof(struct Node)); temp = temp->next; temp->next = NULL; } } while(first || second) { temp->next = (struct Node*)malloc(sizeof(struct Node)); temp = temp->next; temp->next = NULL; if(first) { temp->coeff = first->coeff; temp->pow = first->pow; first = first->next; } else if(second) { temp->coeff = second->coeff; temp->pow = second->pow; second = second->next; } } } int main() { struct Node* first = NULL; struct Node* second = NULL; struct Node* result = NULL; printf("\nEnter the corresponding data:-\n"); printf("\nFirst polynomial:\n"); readPolynomial(&first); displayPolynomial(first); printf("\nSecond polynomial:\n"); readPolynomial(&second); displayPolynomial(second); addPolynomials(&result, first, second); displayPolynomial(result); return 0; }
Editor is loading...