SLL

, by Prashant Gunjal


#include<iostream.h>
#include<conio.h>
#include<alloc.h>
#include<stdio.h>
struct list
{
int data;
struct list * next;

};
typedef struct list node;
node * head=NULL;
class sll
{
public:
node * getnode();
void create();
void display();
void deletef();
void deletel();
node * insertf();
void insertl();
void insertpos();
void deletepos();
};
node * sll::getnode()
{
node * temp;
temp = new node();
//or you can use//temp=(node *)malloc(sizeof(node));
cout<<"Enter Data";
cin>>temp->data;
temp->next=NULL;
return temp;
}
void sll ::create()
{
int no,i,x;
node * last,*temp;
cout<<"\nEnter no of nodes : ";
cin>>no;
for(i=0;i<no;i++)
{
temp=getnode();
if(head==NULL)
{
head=temp;
}
else
{
last=head;
while(last->next!=NULL)
{
last=last->next;
}
last->next=temp;
}

}
}
void sll::display()
{
node *p;
p=head;
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;

}

}

node * sll::insertf()
{
node * p=NULL;
int x;
p= getnode();
p->next=head;
head=p;
return head;
}
void sll::insertl()
{
node * p=NULL,*temp=NULL;
p=getnode();
temp=head;
while(temp->next!=NULL)
{
temp=temp->next;
}
temp->next=p;
}

void sll::insertpos()
{
node * temp=NULL,*last;
int pos,i;
cout<<"Enter position no. = ";
cin>>pos;
if(pos>1)
{
i=1;
last=head;
while(last!=NULL&&i<pos)
{
last=last->next;
i++;
}
if(last!=NULL)
{
temp=getnode();
temp->next=last->next;
last->next=temp;
}
}
else
cout<<"Not possible" ;
}

void sll::deletepos()
{
node * temp=NULL,*last;
int pos,i;
cout<<"Enter position no. = ";
cin>>pos;
if(pos>1)
{
i=1;
last=head;
while(last!=NULL&&i<pos-1)
{
last=last->next;
i++;
}
if(last!=NULL)
{
temp=last->next;
last->next=temp->next;
delete temp;
}
}
else
cout<<"Not possible" ;
}

void sll ::deletef()
{
node * p;
p=head;
head=head->next;
delete (p);
}
void sll:: deletel()
{
node * p=NULL;
p=head;
while(p->next->next!=NULL)
{
p=p->next;

}
delete (p->next);
p->next=NULL;

}
void main()
{
int ch,i;
sll l;
clrscr();
do
{
cout<<"\n1.Create\n2.Display\n3.Insert First";
cout<<"\n4.Insert Last\n5.Delete First\n6.Delete Last";
cout<<"\n7.Insert after pos\n8.delete by pos\n9.Exit";
cout<<"\nEnter your choice  ";
cin>>ch;

switch(ch)
{
case 1:
l.create();
break;

case 2:
l.display();
break;
case 3:
head=l.insertf();
break;
case 4:
l.insertl();
case 5:
l.deletef();
break;
case 6:
l.deletel();
break;
case 7:
l.insertpos();
break;
case 8:
l.deletepos();
break;
}
}while(ch<9);
       getch();

}

0 comments: