assign1.docx

13
Data Structures and algorithms Submitted To: Ma`am Aiemen Akif Sumitted By: Ameer Hamza Muhammad Muneeb Malik Muhammad Shoaib Class: B.E.T.E- 51 Section: “C”

Upload: junaid-afzal

Post on 04-Jan-2016

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: assign1.docx

ta Structures and algorithms

Submitted To:

Ma`am Aiemen Akif

Sumitted By:

Ameer Hamza

Muhammad Muneeb Malik

Muhammad Shoaib

Class:

B.E.T.E-51

Section:

“C”

Page 2: assign1.docx

TE-51

ASSIGNMENT 1

DATA STRUCTURES AND ALGORITHMS

1. Create a doubly circular link list of N elements where n is entered by the user. Write functions to create, display and delete the list. The display function called before delete would display the complete list and the same function called after delete should display a message indicating “No elements to delete”.

Answer:

#include<iostream.h>#include<conio.h>

struct node{ int data; node *next,*prev;};

class dl{ private: node *head,*tail,*temp,*temp1,*temp2; int k; public: dl(){ head=NULL; k=0; } void count(){ temp1=head;

while(temp1->next!=head){ temp1=temp1->next; k++; } }//---------------------------create--------------------- void create(){ int n,x; cout<<"enter the number of nodes\t:"; cin>>n; for(int i=0;i<n;i++){ if(head==NULL){ temp= new node; cout<<"enter the data\t:"; cin>>x; temp->data=x; head=temp; tail=temp; temp->next=head; temp->prev=tail;

} else{ temp1=head; while(temp1->next!=head){

Page 3: assign1.docx

TE-51

temp1=temp1->next; } temp=new node; cout<<"enter the data\t:"; cin>>x; temp->data=x; temp1->next=temp; temp->next=head; temp->prev=temp1; tail=temp; } } }//------------------------delete--------------------- void del(){ temp1=head; if(k==1){ delete temp1; head=NULL; } else{ for(int i=0;i<=k;i++){ temp2=temp; temp1=temp1->next; head=temp1; delete temp2; } head=NULL; }

}//-----------------------display--------------------- void display(){ if(head!=NULL){ temp1=head; for(int i=0;i<=k;i++){ cout<<"your data is \t:"<<temp1->data<<endl; temp1=temp1->next; } } else{ cout<<"nothing to show\n"; } }};int main(){ dl a; a.create(); a.count(); a.display(); cout<<"do yo want to delete enter y,n\n"; char d; cin>>d; if(d=='y'){ a.del(); a.display();} else{ cout<<"ok"; } getch();}

Page 4: assign1.docx

TE-51

2. Assume two link lists A and B.A - 2 , 5, 9, 14 , 15, 7 , 2 , 17 , 30B - 14 , 2 , 9 , 13 , 37 , 8 , 7 28

Write a function to create a list C that contains only those elements that are common in link list A and B. Your program should work for any set of values.

Answer:

#include<iostream.h>#include<conio.h>struct node{ int data; node *next;};class work{ private: node *head,*head1,*head2,*temp,*temp1,*temp2,*temp3; int n,q; public: work(){ head1=NULL; head2=NULL; head=NULL; n=0; q=0; }//------------------------------------------------------------------------------ void create(){ int x; cout<<"enter the number of nodes for A\t:"; cin>>n; for(int i=0;i<n;i++){ if(head1==NULL){ temp=new node; cout<<"enter the data\t:"; cin>>x; temp->data=x;

Page 5: assign1.docx

TE-51

temp->next=NULL; head1=temp;

} else{ temp1=head1; while(temp1->next!=NULL){ temp1=temp1->next; } temp=new node; cout<<"enter the data\t:"; cin>>x; temp->data=x; temp->next=NULL; temp1->next=temp; } }//------------------------------for B------------------------------------------- cout<<"enter the number of nodes for B\t:"; cin>>q; for(int i=0;i<q;i++){ if(head2==NULL){ temp=new node; cout<<"enter the data\t:"; cin>>x; temp->data=x; temp->next=NULL; head2=temp;

} else{ temp1=head2; while(temp1->next!=NULL){ temp1=temp1->next; } temp=new node; cout<<"enter the data\t:"; cin>>x; temp->data=x; temp->next=NULL; temp1->next=temp; } } }//------------------------------------------------------------------------------ void sep(){ int t=0,g=0; temp1=head1; temp3=head; temp2=head2; for(int i=0;(temp1!=NULL)&&(temp2!=NULL);i++){ temp2=head2; while(temp2->next!=NULL){ if(temp1->data==temp2->data){ g++; } temp2=temp2->next; } temp1=temp1->next; }

temp1=head1; temp2=head2;

Page 6: assign1.docx

TE-51

for(int i=0;i<g;i++){ if(head==NULL){ temp=new node; head=temp; temp->next=NULL; } else{ temp3=head; while(temp3->next!=NULL){ temp3=temp3->next; } temp=new node; temp->next=NULL; temp3->next=temp;

}

} temp3=head; while(temp3!=NULL){ temp2=head2; while(temp2!=NULL){ if(temp1->data==temp2->data){ temp3->data=temp1->data; } temp2=temp2->next; } temp3=temp3->next; temp1=temp1->next; } }//------------------------------------------------------------------------------ void display(){

temp3=head;

while(temp3!=NULL){ cout<<"your data is :"<<temp3->data<<endl; temp3=temp3->next; } }};

int main(){ work a; a.create(); a.sep(); a.display();

getch();}

Page 7: assign1.docx

TE-51

3. Write a program that performs addition of two polynomials using linked lists. Both the polynomials are input by the user.

i) Initially ask the user to enter the number of terms for both the polynomials. Number of terms in both the polynomials may vary. ii) The coefficient and exponent of each term of polynomial is input by the user. It is assumed that the user will enter the values in the decreasing order of coefficients. i.e. 3x^4 + 14x^3 +5x^2 +7

It is not compulsory to enter every coefficient. User may skip any coefficient as shown in the above example. Once the user has entered both of the polynomials, the next task is to add them and display the result. Consider the following node and class structure

Answer:

Page 8: assign1.docx

TE-51

Page 9: assign1.docx

TE-51

Page 10: assign1.docx

TE-51

Page 11: assign1.docx

TE-51

Page 12: assign1.docx

TE-51