Professional Documents
Culture Documents
Assignment 2
Assignment 2
CODE:
#include<iostream>
class Node
public:
int data;
Node* next;
};
class List
private:
Node* head;
public:
void Display();
};
t->data=data;
if(pos==0)
t->next=head;
head=t;
else
{
Node* curr=head;
for(int i=0;i<pos-1&&curr;i++)
curr=curr->next;
if(!curr)
cout<<"Invalid position!!\n";
delete t;
return;
t->next=curr->next;
curr->next=t;
curr=t;
if (!head)
return;
if (position == 0)
head = head->next;
delete temp;
else {
curr = curr->next;
if (!curr || !curr->next) {
return;
curr->next = toDelete->next;
delete toDelete;
head = nullptr;
Node* curr;
newNode->data=A[i];
if (!head)
head = newNode;
curr=head;
else
curr->next = newNode;
curr = newNode;
}
void List::Display()
Node* curr=head;
while(curr)
cout<<curr->data<<" ";
curr=curr->next;
cout<<endl;
int main() {
List myList;
myList.Create(arr, size);
myList.Display();
myList.Insert(10, 4);
myList.Display();
myList.Delete(4);
myList.Display();
return 0;
} // OUTPUT:
PROBLEM 2: POLYNOMIAL IMPLEMENTATION AS LINKED LIST
CODE:
#include<iostream>
class Node
public:
int coefficient;
int exponent;
Node* next;
this->exponent=exp;
this->coefficient=coef;
this->next=NULL;
};
class SparsePolynomial
private:
Node* head;
public:
SparsePolynomial()
head=NULL;
if (!head || exponent>head->exponent)
{
newNode->next=head;
head=newNode;
else
Node* curr=head;
Node* prev=NULL;
while(curr&&(exponent<(curr->exponent)))
prev=curr;
prev->next=newNode;
while(curr)
if(curr->exponent==exponent)
return curr;
curr=curr->next;
return NULL;
void display()
{
Node* curr=head;
while(curr)
{ if(curr->exponent!=0)
cout<<curr->coefficient<<"x^"<<curr->exponent;
else
cout<<curr->coefficient;
curr=curr->next;
if(curr)
if(curr->coefficient>0)
cout<<" + ";
else
cout<<" ";
cout<<endl;
SparsePolynomial result;
Node* term1=head;
Node* term2=other.head;
while(term1&&term2)
if(term1->exponent>term2->exponent)
result.Insert_term(term1->coefficient,term1->exponent);
term1=term1->next;
else if (term1->exponent<term2->exponent)
{
result.Insert_term(term2->coefficient,term2->exponent);
term2=term2->next;
else
int sum=term1->coefficient+term2->coefficient;
result.Insert_term(sum,term1->exponent);
term1=term1->next;
term2=term2->next;
while(term1)
result.Insert_term(term1->coefficient,term1->exponent);
term1=term1->next;
while(term2)
result.Insert_term(term2->coefficient,term2->exponent);
term2=term2->next;
return result;
SparsePolynomial result;
while (term1) {
while (term2) {
int product_exponent = term1->exponent + term2->exponent;
existingTerm->coefficient += product_coefficient;
} else {
result.Insert_term(product_coefficient, product_exponent);
term2 = term2->next;
term1 = term1->next;
return result;
};
int main()
SparsePolynomial poly1,poly2;
poly1.Insert_term(9,5);
poly1.Insert_term(7,3);
poly1.Insert_term(8,1);
cout<<"Polynomial 1 : ";
poly1.display();
poly2.Insert_term(7,5);
poly2.Insert_term(9,4);
poly2.Insert_term(6,3);
poly2.Insert_term(3,2);
poly2.Insert_term(14,0);
cout<<"Polynomial 2 : ";
poly2.display();
SparsePolynomial addresult=poly1.add(poly2);
SparsePolynomial multiresult=poly1.multiply(poly2);
addresult.display();
cout<<"Multiplication : ";
multiresult.display();
return 0;
OUTPUT:
CODE:
#include <iostream>
class Node {
public:
Node* next;
class Sparse {
private:
public:
// Constructor
~Sparse() {
Node* nextNode;
nextNode = current->next;
delete current;
current = nextNode;
}
// Function to insert a non-zero element into the sparse matrix
newNode->next = matrix[row];
matrix[row] = newNode;
current = current->next;
return result;
current = current->next;
} else {
};
int main()
matrix.insert(0, 1, 5);
matrix.insert(1, 2, 8);
matrix.insert(2, 0, 9);
matrix.displayMatrixForm();
transposedMatrix.displayMatrixForm();
return 0;
OUTPUT: