Skip to main content

C++ Linked List all Operations Revealed



#include<iostream>
using namespace std;

struct node
{
int data;
struct node *prev,*next;
};

class dlist
{
struct node *start;

public:
dlist()
{
start=NULL;
}

void insert_beg(int);
void insert_end(int);
void insert_after(int,int);
void insert_before(int,int);
void delete_beg();
void delete_end();
void delete_pos(int,int);
void display_forward();
void display_reverse();
};

void dlist::insert_beg(int element)
{
struct node *p,*temp;

p=(struct node*)malloc(sizeof(struct node));
p->data=element;
p->next=start;
p->prev=NULL;
start=p;
if(start!=NULL)
start->prev=p;

}


void dlist::insert_end(int element)
{
struct node *p,*temp;

p=(struct node*)malloc(sizeof(struct node));
p->data=element;
if(start==NULL)
{
p->next=start;
p->prev=start;
start=p;


}
else
{ temp=start;
while(temp->next!=NULL)
{
temp=temp->next;

}
p->prev=temp;
temp->next=p;
p->next=NULL;
temp=p;


}

}

void dlist::insert_after(int after,int element)
{
struct node *temp;
if(start!=NULL)
{
temp=start;
while(temp->data!=after&&temp->next!=NULL)
{
temp=temp->next;
}

if(temp->next==NULL&&temp->data==after)
{
struct node *p;
p=(struct node*)malloc(sizeof(struct node));
p->data=element;
p->next=temp->next;
p->prev=temp;
temp->next=p;

}

else if(temp->data==after&&temp->next!=NULL)
{
struct node *p;
p=(struct node*)malloc(sizeof(struct node));
p->data=element;
p->next=temp->next;
p->prev=temp;
temp->next->prev=p;
temp->next=p;
}
else
{
cout<<"item not found\n";
}



}
else
{
cout<<"list is empty\n";

}

}

void dlist::insert_before(int before,int element)
{
struct node *temp;
if(start!=NULL)
{
temp=start;
while(temp->data!=before&&temp->next!=NULL)
{
temp=temp->next;
}

if(temp->prev==NULL&&temp->data==before)
{
struct node *p;
p=(struct node*)malloc(sizeof(struct node));
p->data=element;
p->next=temp;
p->prev=temp->prev;
start=p;
temp->prev=p;

}

else if(temp->data==before)
{
struct node *p;
p=(struct node*)malloc(sizeof(struct node));
p->data=element;
p->next=temp;
p->prev=temp->prev;
temp->prev->next=p;
temp->prev=p;
}
else
{
cout<<"item not found\n";
}



}
else
{
cout<<"list is empty\n";

}

}


void dlist::delete_beg()
{
struct node *temp;
temp=start;
if(start!=NULL)
{
if(temp->next==NULL)
start=temp->next;
else
temp->next->prev=start;

start=temp->next;
free(temp);

}
else
{
cout<<"list is empty\n";
}

}

void dlist::delete_end()
{
struct node *temp;
temp=start;
if(start!=NULL)
{
while(temp->next!=NULL)
{
temp=temp->next;
}
if(start->prev!=NULL)
temp->prev->next=NULL;
else
start=temp->next;
free(temp);

}
else
{
cout<<"list is empty\n";
}



}


void dlist::delete_pos(int,int)
{
}


void dlist::display_forward()
{
struct node *temp;
temp=start;
while(temp!=NULL)
{
cout<<temp->data<<"<--->";
temp=temp->next;

}



}

void dlist::display_reverse()
{

}


int main()
{

dlist obj;

int item,pos,choice;


while(choice!=10)
{
cout<<"Enter your choice\nEnter 1 for display the list forward\nEnter 2 for inserting an item begining\nEnter 3 for insert at end\nEnter 4 for insert after\nEnter 5 for insert before\nEnter 6 for delete frm beg\nEnter 7 for delete at end\nEnter 8 for delete at postiton\nEnter 9 for traverse reverse\nEnter 10 for exit\n";
cin>>choice;

switch(choice)
{
case 1:
obj.display_forward();
break;
case 2:
cout<<"enter the item\n";
cin>>item;
obj.insert_beg(item);
break;
case 3:
cout<<"Enter the item\n";
cin>>item;
obj.insert_end(item);
break;
case 4:
cout<<"Enter the position\n" ;
cin>>pos;
cout<<"Enter the item\n";
cin>>item;
obj.insert_after(pos,item);
break;

case 5:
cout<<"Enter the position\n";
cin>>pos;
cout<<"Enter the item\n";
cin>>item;
obj.insert_before(pos,item);
break;

case 6:

obj.delete_beg();
break;

case 7:

obj.delete_end();
break;
case 8:
cout<<"Enter the position\n";
cin>>pos;
cout<<"Enter the item\n";
cin>>item;
obj.delete_pos(pos,item);
break;

case 9:

obj.display_reverse();
break;



}

}





return 0;
}

Comments

Popular posts from this blog

CDAC CCAT Rank - Which Centre you Should go for...

Subscribe us for our YouTube channel and any kind of help Click here to ask questions regarding CDAC 1. C-DAC (Head Quarters) Pune    CDAC's Admission Booklet- Process of Admission to Post Graduate Diploma Courses of C-DAC                         click below to know about the CCAT's This batch allotment                click above to know about the CCAT's This batch allotment Rank 1-300 c-dac HQ has been the best from the start. 2.  Sunbeam Pune Rank 300-500 I got very positive feedback from my friends who are in c-dac banglure main campus,since there are many companies you may get more opportunities. 3.  C-DAC Knowledge Park Rank 400-700 It as very good faculty .Almost all the students get placed here every year. 4. C-DAC Hyderabad Rank 200-1000 (It depends on the course which you select) C-DAC hyderabad is very good for the course PG-DESD. PG-DESD course is in hyderbad is better than pune HQ as per the past feedback.It as v

CDAC COURSES AND PLACEMENTS, WHICH IS BETTER FOR YOU

Subscribe us for our YouTube channel and any kind of help   Click here to ask questions regarding CDAC Before going through this post, I would like to draw your attention towards the importance of this post. This page not only explains my experience in CDAC but also aims at answering the queries of you all who are going or looking to have a course from CDAC. Kindly post your queries at the bottom of this page and we will get back to you within 24 hours. Kindly do not post your queries as an Anonymous user and do not forget to subscribe via email so as to keep track of your query.                         click below to know about the CCAT's This batch allotment                 click below to know about the CCAT's This batch allotment ______________________________________________ NOW a day lot of the graduates and post graduates are wondering most of the times on which course they should go for. What are the pros & cons of joining a particular ce

Placement Statistics - 2011 & 2012

Subscribe us for our YouTube channel and any kind of help                          Post your queries below and we will get back to you in no more than 24 hours.  Click here to ask questions regarding CDAC                         click below to know about the CCAT's This batch allotment                     click above to know about the CCAT's This batch allotment CDAC's Admission Booklet- Process of Admission to Post Graduate Diploma Courses of C-DAC Click here to see placement statistics About C-CAT, Exam Pattern and Books No. of Seats Across Various Training Centres Important Dates - 2014 Tags: CDAC, CDAC scope in future, CDAC placements, CDAC training, CDAC recruitment, CDAC training centres, DSSD, DESD, DAC, PGDSSD, PGDESD, PGDAC, DABC, PGDABC, VLSI, PGDITISS, PGDIVESD, PGDESD, PGDWiMC, placement statistics