SINGLELINKEDLIST
#include
#include
#include
#include
void createlist();
void insert_begin();
void insert_end();
void insert_pos();
void delete_begin();
void delete_end();
void delete_pos();
void display();
int count();
struct list
{
int data;
struct list *next;
};
typedef struct list node;
node *start='\0';
node *tail='\0';
node *nptr;
void main()
{
int choice;
char ch;
clrscr();
do
{
printf("\n\n\n1.creat lsit\n2.insert at begin \n3.insert at end \n4.insert at position \n5.delete begin\n6.delete at end \n7.delete at position\n8.display\n9.exit\n\n\n");
printf("\n------------------\n");
printf("enter u r choice ");
scanf("%d",&choice);
switch(choice)
{
case 1:
createlist();
break;
case 2:
insert_begin();
break;
case 3:
insert_end();
break;
case 4:
insert_pos();
break;
case 5: delete_begin();
break;
case 6:
delete_end();
break;
case 7: delete_pos();
break;
case 8: display();
break;
case 9:exit(0);
break;
default:
printf("\nenter correct choice");
}
}
while(1);
getch();
}
void createlist()
{
int element;
printf("\nenter data ");
scanf("%d",&element);
nptr=(node *)malloc(sizeof(node));
if(start==NULL)
{
start=nptr;
nptr->data=element;
nptr->next=NULL;
tail=nptr;
}
else
{
nptr->data=element;
tail->next=nptr;
nptr->next=NULL;
tail=nptr;
}
display();
}
void display()
{
node *temp=start;
printf("\n");
while(temp!=NULL)
{
printf("%d -> ",temp->data) ;
temp=temp->next;
}
}
void insert_begin()
{
int element;
nptr=(node *)malloc(sizeof(node));
printf("\nenter data ");
scanf("%d",&element);
nptr->data=element;
nptr->next=start;
start=nptr;
display();
}
void insert_end()
{
int element;
nptr=(node *)malloc(sizeof(node));
printf("\nenter data ");
scanf("%d",&element);
node *temp=start;
while(temp->next!=NULL)
{
temp=temp->next;
}
nptr->data=element;
temp->next=nptr;
nptr->next=NULL;
display();
}
void insert_pos()
{
int element,pos,i,count1;
nptr=(node *)malloc(sizeof(node));
printf("\nenter data ");
scanf("%d",&element);
printf("\n enter position to be inserted");
scanf("%d",&pos);
count1=count();
if(count1>=pos)
{
node *temp=start;
for(i=1;i
{
temp=temp->next;
}
nptr->data=element;
nptr->next=temp->next;
temp->next=nptr;
display();
}
else
{
printf("position long value u have only %d nodes",count1);
}
}
void delete_begin()
{
start=start->next;
display();
}
void delete_end()
{
node *temp=start,*prev;
while(temp->next!=NULL)
{
prev=temp;
temp=temp->next;
}
prev->next=NULL;
display();
}
void delete_pos()
{
node *temp,*pre;
int i,pos,count1;
printf("\nenter the postion do u want to delete");
scanf("%d",&pos);
count1=count();
if(count1>pos)
{
temp=start;
for(i=1;i
{
printf("position ");
temp=temp->next;
}
pre=(temp->next)->next;
temp->next=pre;
display();
}
else if(count1==pos)
{
delete_end();
}
else
printf("SUch node not find large value");
}
int count()
{
node *temp=start;
int i=0;
while(temp!=NULL)
{
temp=temp->next;
i=i+1;
}
return i;
}