/*Linked list first
last middle insert without create function search and delete */
#include<stdio.h>
#include<malloc.h>
struct node
{
int data;
struct node *next;
};
struct node
*first=NULL;
struct node
*ptr=NULL;
struct node
*prev=NULL;
struct node
*last=NULL;
struct node
*newnode=NULL;
int
val,pos,count=0,i;
void insert_first();
void insert_last();
void insert_pos();
void display();
int main()
{
display();
insert_first();
insert_first();
insert_first();
display();
printf("\n");
insert_last();
insert_last();
insert_last();
display();
insert_pos();
insert_pos();
display();
printf("\n");
return 0;
}
void insert_first()
{
printf("enter a
number to insert at first:\n");
scanf("%d",&val);
newnode=(struct node
*)malloc(sizeof(struct node));
newnode->data=val;
newnode->next=NULL;
if(first==NULL)
{
first=newnode;
first->next=NULL;
}
else
{
newnode->next=first;
first=newnode;
}
}
void display()
{
if(first==NULL)
{
printf("No
element to display.\n");
}
else
{
/*for(ptr=first;ptr!=NULL;ptr=ptr->next)
{
printf("%d\t",ptr->data);
}*/
ptr=first;
while(ptr!=NULL)
{
printf("%d\t",ptr->data);
ptr=ptr->next;
}
}
}
void insert_last()
{
newnode=(struct node
*)malloc(sizeof(struct node));
printf("enter a
number to insert at last:\n");
scanf("%d",&newnode->data);
newnode->next=NULL;
if(first==NULL)
{
first=newnode;
}
else
{
ptr=first;
while(ptr->next!=NULL)//ptr-next
is must as segflt
{
ptr=ptr->next;
}
ptr->next=newnode;
newnode->next=NULL;
}
}
void insert_pos()
{
int pos, val,
cnt = 0, i;
printf("\nEnter
the position:\n ");
scanf("%d",
&pos);
printf("\nEnter
the value for the Node:\n");
scanf("%d",
&val);
newnode=(struct
node *)malloc(sizeof(struct node));
newnode->data=val;
ptr = first;
while (ptr !=
NULL)
{
ptr =
ptr->next;
cnt++;
}
if (pos == 1)
{
if (first ==
last && first == NULL)
{
first =
last = newnode;
first->next = NULL;
last->next = NULL;
}
else
{
newnode->next=first;
first=newnode;
}
printf("\nInserted\n");
}
else if (pos>1
&& pos<=cnt)
{
ptr = first;
for (i = 1;i
< pos;i++)
{
prev =
ptr;
ptr =
ptr->next;
}
prev->next
= newnode;
newnode->next = ptr;
printf("\nData inserted.\n");
}
else
{
printf("\nPosition is out of range\n");
}
}
/*
No element to
display.
enter a number to
insert at first:
1
enter a number to
insert at first:
2
enter a number to
insert at first:
3
3 2 1
enter a number to
insert at last:
4
enter a number to
insert at last:
5
enter a number to
insert at last:
6
3 2 1
4 5 6
Enter the position:
2
Enter the value for
the Node:
22
Data inserted.
Enter the position:
1
Enter the value for
the Node:
11
Inserted
11 3 22
2 1 4 5 6
*/
No comments:
Post a Comment