Exp 1

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 10

Exp No: 1 SINGLY LINKED LIST

Date:

AIM
To Write a C++ program that uses functions to perform the following:
a) Create a singly linked list of integers.
b) Delete a given integer from the above linked list.
c) Display the contents of the above list after deletion.
ALGORTHIM
Step 1 :
Start the program
Step 2 :
Create a head node and with help of the switch case option add delete display exit we going to
perform this single linked list.
Step 3 :
Insertion:
a) Enter the choice for add in the switch case.
b) The function moves the calls to void add (), if given list is NULL the given data is added or
else it’s shift the address to the next node.
Step 4 :
Deletion:
a) Enter the choice for delete in the switch case.
b) The function moves the call to the void Del ().
c) Check whether the list is empty or not if empty mean” data not found” may display. d) Using
of the while loop check the data which is present in the list.
Step 5 :
Display:
a) Enter the choice for display in the switch case.
b) The function moves the call to the void display ().
c) Check whether the list is empty or not if empty mean” data not found” may display.
d) List is not equal to NULL than its display the element and move to next pointer for next
element till condition fails.
Step 6 :
Stop the program and Exit* C++ Program to Implement Singly Linked List

PROGRAM
#include<iostream>

using namespace std;

struct node
{
int info;
struct node *next;
}*start;

classsingle_llist
{
public:
node* create_node(int);
voidinsert_begin();
voidinsert_pos();
voidinsert_last();
voiddelete_pos();
void display();
single_llist()
{
start = NULL;
}
};

main()
{
int choice, nodes, element, position, i;
single_llistsl;
start = NULL;
while (1)
{
cout<<endl<<"---------------------------------"<<endl;
cout<<endl<<"Operations on singly linked list"<<endl;
cout<<endl<<"---------------------------------"<<endl;
cout<<"1.Insert Node at beginning"<<endl;
cout<<"2.Insert node at last"<<endl;
cout<<"3.Insert node at position"<<endl;
cout<<"4.Delete a Particular Node"<<endl;
cout<<"5.Display Linked List"<<endl;
cout<<"6.Exit "<<endl;
cout<<"Enter your choice : ";
cin>>choice;
switch(choice)
{
case 1:
cout<<"Inserting Node at Beginning: "<<endl;
sl.insert_begin();
cout<<endl;
break;
case 2:
cout<<"Inserting Node at Last: "<<endl;
sl.insert_last();
cout<<endl;
break;
case 3:
cout<<"Inserting Node at a given position:"<<endl;
sl.insert_pos();
cout<<endl;
break;

case 4:
cout<<"Delete a particular node: "<<endl;
sl.delete_pos();
break;

case 5:
cout<<"Display elements of link list"<<endl;
sl.display();
cout<<endl;
break;

case 6:
cout<<"Exiting..."<<endl;
exit(1);
break;
default:
cout<<"Wrong choice"<<endl;
}
}
}

/*
* Creating Node
*/
node *single_llist::create_node(int value)
{
struct node *temp, *s;
temp = new(struct node);
if (temp == NULL)
{
cout<<"Memory not allocated "<<endl;
return 0;
}
else
{
temp->info = value;
temp->next = NULL;
return temp;
}
}

voidsingle_llist::insert_begin()
{
int value;
cout<<"Enter the value to be inserted: ";
cin>>value;
struct node *temp, *p;
temp = create_node(value);
if (start == NULL)
{
start = temp;
start->next = NULL;
}
else
{
p = start;
start = temp;
start->next = p;
}
cout<<"Element Inserted at beginning"<<endl;
}

voidsingle_llist::insert_last()
{
int value;
cout<<"Enter the value to be inserted: ";
cin>>value;
struct node *temp, *s;
temp = create_node(value);
s = start;
while (s->next != NULL)
{
s = s->next;
}
temp->next = NULL;
s->next = temp;
cout<<"Element Inserted at last"<<endl;
}

voidsingle_llist::insert_pos()
{
int value, pos, counter = 0;
cout<<"Enter the value to be inserted: ";
cin>>value;
struct node *temp, *s, *ptr;
temp = create_node(value);
cout<<"Enter the postion at which node to be inserted: ";
cin>>pos;
inti;
s = start;
while (s != NULL)
{
s = s->next;
counter++;
}
if (pos == 1)
{
if (start == NULL)
{
start = temp;
start->next = NULL;
}
else
{
ptr = start;
start = temp;
start->next = ptr;
}
}
else if (pos> 1 &&pos<= counter)
{
s = start;
for (i = 1; i<pos; i++)
{
ptr = s;
s = s->next;
}
ptr->next = temp;
temp->next = s;
}
else
{
cout<<"Positon out of range"<<endl;
}
}

voidsingle_llist::delete_pos()
{
intpos, i, counter = 0;
if (start == NULL)
{
cout<<"List is empty"<<endl;
return;
}
cout<<"Enter the position of value to be deleted: ";
cin>>pos;
struct node *s, *ptr;
s = start;
if (pos == 1)
{
start = s->next;
}
else
{
while (s != NULL)
{
s = s->next;
counter++;
}
if (pos> 0 &&pos<= counter)
{
s = start;
for (i = 1;i <pos;i++)
{
ptr = s;
s = s->next;
}
ptr->next = s->next;
}
else
{
cout<<"Position out of range"<<endl;
}
free(s);
cout<<"Element Deleted"<<endl;
}
}

voidsingle_llist::display()
{
struct node *temp;
if (start == NULL)
{
cout<<"The List is Empty"<<endl;
return;
}
temp = start;
cout<<"Elements of list are: "<<endl;
while (temp != NULL)
{
cout<<temp->info<<"->";
temp = temp->next;
}
cout<<"NULL"<<endl;
}

RESULT:

You might also like