0% found this document useful (0 votes)
78 views21 pages

DSA Final Paper: Name

This document contains the final paper submitted by Sehrish Muneer for the Data Structures Algorithms (DSA) lab class. The paper includes 3 questions - the first two involve writing C++ programs to analyze employee salary data in an array and merge/update elements in two arrays, and the third involves writing a program to implement operations on a double circular linked list such as insert, delete, display, and reverse elements.

Uploaded by

Sehrish Muneer
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
78 views21 pages

DSA Final Paper: Name

This document contains the final paper submitted by Sehrish Muneer for the Data Structures Algorithms (DSA) lab class. The paper includes 3 questions - the first two involve writing C++ programs to analyze employee salary data in an array and merge/update elements in two arrays, and the third involves writing a program to implement operations on a double circular linked list such as insert, delete, display, and reverse elements.

Uploaded by

Sehrish Muneer
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 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