You are on page 1of 6

Department of Software Engineering

Data Structures & Algorithms Lab


Lab # 6

SUBMITTED TO:
Sir Rehan Ahmed Siddiqui
SUBMITTED BY:
Mahnoor Mustafa
(2020-BSE-051)
CLASS:
BSE III B
TASK 1
Give answers to the following.
1. The following list of names is assigned (in order) to a linear array INFO. Assign value to LINK
and START, so that INFO, LINK and START form an alphabetical list.

START INFO LINK


Y Q Mary I
W Helen U
E Barbara T
R Paula O
T Diana P
Y Audrey E
U Karen Q
2. Given the following linked list, state I Nancy R what does each
of the following statements O Ruth refer to.
ptr
P Eileen W
First 1

First->data 1
First->next->next->data; 3
Ptr->next->data; 3
Ptr->next->next; NULL
First->next->next->next; NULL

3. Redraw the following list after the given instructions are executed:

First 1
2 3

ptr

First -> next = first -> next -> next;


1 3
First

Ptr -> next -> next = Ptr;

2 3

ptr
Ptr->next = NULL;

2
NULL
ptr
TASK 2
Implement the class Linked List to create a list of integers. You need to provide
the implementation of the member functions as described in the following

class List
{
private:
struct node
{
int data;
node* next;
} *head;
public:
List();
~List();
bool emptyList(); // Checks if the list is empty or not
void insertafter(int oldV, int newV);
// Inserts a new node with value ‘newV’ after the node containing value ‘oldV’. If
a node with value ‘oldV’ doesnot exist, inserts the new node at the end.
void deleteNode(int value);
// Deletes the node containing the specified value
void insert_begin(int value);
// Inserts a new node at the start of the list
void insert_end(int value);
// Inserts a new node at the end of the list
void traverse();
// Displays the values stored in the list

PROGARM:
#include<iostream>
using namespace std;
class list
{
private:
struct node
{
int data;
node* next;
}*head;
public:
list()
{
head = NULL;
}
~list()
{
}
bool emptylist()
{
if (head == NULL)
return true;
else
return false;
}
void insertafter(int oldV, int newV)
{
node* temp;
temp = new node;
temp->data = newV;
node* ptr;
ptr = head;
for (int i = 0; i < oldV - 1; i++)
{
ptr = ptr->next;
}
temp->next = ptr->next;
ptr->next = temp;
}
void deleteNode(int value)
{
node* ptr = head;
node* preptr = NULL;
while (ptr->data != value)
{
preptr = ptr;
ptr = ptr->next;
}
preptr->next = ptr->next;
delete ptr;
}
void insert_begin(int value)
{
node* temp;
temp = new node;
temp->data = value;
temp->next = NULL;
if (head == NULL)
{
head = new node;
head->data = value;
head->next = NULL;
head = temp;
}
else
{
temp->next = head;
head = temp;
}
}
void insert_end(int value)
{
node* temp;
temp = new node;
temp->data = value;
temp->next = NULL;
if (head == NULL)
{
head = temp;
}
else
{
node* ptr;
ptr = head;
while (ptr->next != NULL)
{
ptr = ptr->next;
}
ptr->next = temp;
}
}
void traverse()
{
node* s;
cout << "data in link list is" << endl;
s = head;
while (s->next != NULL)
{
cout << s->data << endl;
s = s->next;
}
cout << s->data << endl;
}
};
int main()
{
list l;
l.insert_begin(2);
l.insert_begin(3);
l.insert_begin(4);
l.traverse();
l.insert_end(5);
l.insert_end(6);
l.traverse();
l.insertafter(3, 9);
l.traverse();
l.deleteNode(5);
l.traverse();
system("pause");
return 0;
}

You might also like