You are on page 1of 21

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;

You might also like