DS Module -II - SLL
SLL
#include<stdio.h>
#include<stdlib.h>
struct
node
{
int
info;
struct
node *next;
};
struct
node *start;
void
insend(int ele);
void
insbeg(int ele);
void
insmiddle(int ele);
void
delend();
void
delbeg();
void
delmiddle();
void
traverse();
void
main()
{
int ele,choice;
start=NULL;
while(1)
{
clrscr();
printf("\t\t list
operations\n");
printf("1.insbeg\n");
printf("2.insend\n");
printf("3.insmiddle\n");
printf("4.delbeg\n");
printf("5.delend\n");
printf("6.traverse\n");
printf("7.delmiddle\n");
printf("8.exit\n");
printf("enter choice\n");
scanf("%d",&choice);
switch(choice)
{
case 1:printf("\n enetr ele
");
scanf("%d",&ele);
insbeg(ele);
break;
case 2:printf("\n enetr ele
");
scanf("%d",&ele);
insend(ele);
break;
case 3:printf("\n enetr ele
");
scanf("%d",&ele);
insmiddle(ele);
break;
case 4:delbeg();
break;
case 5:delend();
break;
case 6:traverse();
break;
case 7:delmiddle();
break;
case 8:exit(0);
}
}
}
void
insbeg(int ele)
{
struct node *temp;
temp=(struct
node*)malloc(sizeof(struct node));
temp->info=ele;
if(start==NULL)
{
temp->next=NULL;
start=temp;
}
else if(start->next==NULL)
{
temp->next=start;
start=temp;
}
else
{
temp->next=start;
start=temp;
}
}
void
insmiddle(int ele)
{
struct node *temp,*p;int
pos,count=0;
if(start==NULL)
{
temp=(struct
node*)malloc(sizeof(struct node));
temp->info=ele;
temp->next=NULL;
start=temp;
}
else
{
temp=(struct
node*)malloc(sizeof(struct node));
temp->info=ele;
printf("\n enter
position");
scanf("%d",&pos);
p=start;
while(p!=NULL)
{
if(pos==count)
break;
count=count+1;
p=p->next;
}
temp->next=p->next;
p->next=temp;
}
}
void
insend(int ele)
{
struct node *temp,*p;
temp=(struct node*)malloc(sizeof(struct
node));
temp->info=ele;
temp->next=NULL;
if(start==NULL)
{
start=temp;
}
else if(start->next==NULL)
{
start->next=temp;
}
else
{
p=start;
while(p->next!=NULL)
{
p=p->next;
}
p->next=temp;
}
}
void
delbeg()
{
struct node *temp;
if(start==NULL)
printf("\n list is
empty");
else if(start->next==NULL)
{
temp=start;
start=NULL;
free(temp);
}
else
{
temp=start;
start=start->next;
free(temp);
}
}
void
delend()
{
struct node *temp,*p;
if(start==NULL)
printf("\n list is
empty");
else if(start->next==NULL)
{
temp=start;
start=NULL;
free(temp);
}
else
{
p=start;
while(p->next->next!=NULL)
{
p=p->next;
}
temp=p->next;
p->next=NULL;
free(temp);
}
}
void
traverse()
{
struct node *p;
if(start==NULL)
printf("\n list is
empty");
else
{
p=start;
while(p!=NULL)
{
printf("\n
elements are %d",p->info);
p=p->next;
}
}
getch();
}
void
delmiddle()
{
}
Comments
Post a Comment