DSA Final Paper
Name:
Sehrish Muneer
Class:
BScs 3rd ‘F’
Subject:
DSA LAB
Submitted To:
Abdul Basit Khan
Submission Date:
12/02/2021
Q# 01
Write a simple program that uses array to print out number of employees having salary more than
5000.
#include <iostream>
using namespace std;
int main()
int arr[]={2000,5050,5000,65000,1200,7000,10000,80000};
int count =0;
for (int i=0;i<=8;i++)
if(arr[i]>5000)
count++;
cout<<"Total emplyees greater than 5000 :"<<count;
return 0;
Q# 02:
Write a C++ program to merge and update element in an array using function:
#include<iostream>
#include<conio.h>
using namespace std;
int main()
int arr1[70], arr2[50], size1, size2, size, a, j, k, merge[120];
cout<<"Enter Array 1 Size : ";
cin>>size1;
cout<<"Enter Array 1 Elements : ";
for(a=0; a<size1; a++)
cin>>arr1[a];
cout<<"Enter Array 2 Size : ";
cin>>size2;
cout<<"Enter Array 2 Elements : ";
for(a=0; a<size2; a++)
cin>>arr2[a];
for(a=0; a<size1; a++)
merge[a]=arr1[a];
size=size1+size2;
for(a=0, k=size1; k<size && a<size2; a++, k++)
merge[k]=arr2[a];
cout<<"Now the new array after merging is :\n";
for(a=0; a<size; a++)
cout<<merge[a]<<" ";
}
return 0;
Q# 03:
Write a C++ program to insert, delete and display element in the double circular
linked list.
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
struct nod {
int info;
struct nod *n;
struct nod *p;
}*start, *last;
int count = 0;
class circulardoublylist {
public:
nod *create_node(int);
void insert_begin();
void insert_end();
void insert_pos();
void delete_pos();
void search();
void update();
void display();
void reverse();
circulardoublylist() {
start = NULL;
last = NULL;
};
int main() {
int c;
circulardoublylist cdl;
while (1) {
cout<<"1.Insert at Beginning"<<endl;
cout<<"2.Insert at End"<<endl;
cout<<"3.Insert at Position"<<endl;
cout<<"4.Delete at Position"<<endl;
cout<<"5.Update Node"<<endl;
cout<<"6.Search Element"<<endl;
cout<<"7.Display List"<<endl;
cout<<"8.Reverse List"<<endl;
cout<<"9.Exit"<<endl;
cout<<"Enter your choice : ";
cin>>c;
switch(c) {
case 1:
cdl.insert_begin();
break;
case 2:
cdl.insert_end();
break;
case 3:
cdl.insert_pos();
break;
case 4:
cdl.delete_pos();
break;
case 5:
cdl.update();
break;
case 6:
cdl.search();
break;
case 7:
cdl.display();
break;
case 8:
cdl.reverse();
break;
case 9:
exit(1);
default:
cout<<"Wrong choice"<<endl;
return 0;
nod* circulardoublylist::create_node(int v) {
count++;
struct nod *t;
t = new(struct nod);
t->info = v;
t->n = NULL;
t->p = NULL;
return t;
void circulardoublylist::insert_begin() {
int v;
cout<<endl<<"Enter the element to be inserted: ";
cin>>v;
struct nod *t;
t = create_node(v);
if (start == last && start == NULL) {
cout<<"Element inserted in empty list"<<endl;
start = last = t;
start->n = last->n = NULL;
start->p = last->p = NULL;
} else {
t->n = start;
start->p = t;
start = t;
start->p = last;
last->n = start;
cout<<"Element inserted"<<endl;
void circulardoublylist::insert_end() {
int v;
cout<<endl<<"Enter the element to be inserted: ";
cin>>v;
struct nod *t;
t = create_node(v);
if (start == last && start == NULL) {
cout<<"Element inserted in empty list"<<endl;
start = last = t;
start->n= last->n = NULL;
start->p = last->p= NULL;
} else {
last->n= t;
t->p= last;
last = t;
start->p = last;
last->n= start;
void circulardoublylist::insert_pos() {
int v, pos, i;
cout<<endl<<"Enter the element to be inserted: ";
cin>>v;
cout<<endl<<"Enter the position of element inserted: ";
cin>>pos;
struct nod *t, *s, *ptr;
t = create_node(v);
if (start == last && start == NULL) {
if (pos == 1) {
start = last = t;
start->n = last->n = NULL;
start->p = last->p = NULL;
} else {
cout<<"Position out of range"<<endl;
count--;
return;
} else {
if (count < pos) {
cout<<"Position out of range"<<endl;
count--;
return;
s = start;
for (i = 1;i <= count;i++) {
ptr = s;
s = s->n;
if (i == pos - 1) {
ptr->n = t;
t->p= ptr;
t->n= s;
s->p = t;
cout<<"Element inserted"<<endl;
break;
void circulardoublylist::delete_pos() {
int pos, i;
nod *ptr, *s;
if (start == last && start == NULL) {
cout<<"List is empty, nothing to delete"<<endl;
return;
cout<<endl<<"Enter the position of element to be deleted: ";
cin>>pos;
if (count < pos) {
cout<<"Position out of range"<<endl;
return;
s = start;
if(pos == 1) {
count--;
last->n = s->n;
s->n->p = last;
start = s->n;
free(s);
cout<<"Element Deleted"<<endl;
return;
for (i = 0;i < pos - 1;i++ ) {
s = s->n;
ptr = s->p;
ptr->n = s->n;
s->n->p = ptr;
if (pos == count) {
last = ptr;
count--;
free(s);
cout<<"Element Deleted"<<endl;
void circulardoublylist::update() {
int v, i, pos;
if (start == last && start == NULL) {
cout<<"The List is empty, nothing to update"<<endl;
return;
cout<<endl<<"Enter the position of node to be updated: ";
cin>>pos;
cout<<"Enter the new value: ";
cin>>v;
struct nod *s;
if (count < pos) {
cout<<"Position out of range"<<endl;
return;
s = start;
if (pos == 1) {
s->info = v;
cout<<"Node Updated"<<endl;
return;
for (i=0;i < pos - 1;i++) {
s = s->n;
s->info = v;
cout<<"Node Updated"<<endl;
void circulardoublylist::search() {
int pos = 0, v, i;
bool flag = false;
struct nod *s;
if (start == last && start == NULL) {
cout<<"The List is empty, nothing to search"<<endl;
return;
cout<<endl<<"Enter the value to be searched: ";
cin>>v;
s = start;
for (i = 0;i < count;i++) {
pos++;
if (s->info == v) {
cout<<"Element "<<v<<" found at position: "<<pos<<endl;
flag = true;
s = s->n;
if (!flag)
cout<<"Element not found in the list"<<endl;
void circulardoublylist::display() {
int i;
struct nod *s;
if (start == last && start == NULL) {
cout<<"The List is empty, nothing to display"<<endl;
return;
s = start;
for (i = 0;i < count-1;i++) {
cout<<s->info<<"<->";
s = s->n;
cout<<s->info<<endl;
void circulardoublylist::reverse() {
if (start == last && start == NULL) {
cout<<"The List is empty, nothing to reverse"<<endl;
return;
struct nod *p1, *p2;
p1 = start;
p2 = p1->n;
p1->n = NULL;
p1->p= p2;
while (p2 != start) {
p2->p = p2->n;
p2->n = p1;
p1 = p2;
p2 = p2->p;
last = start;
start = p1;
cout<<"List Reversed"<<endl;