#include<stdio.h>
#include<malloc.h>
void create();
void traverse();
void search();
void reverse();
void del();
void sort();
int search2(int val);
typedef struct list
{
int number;
struct list *next;
}node;
node *head=NULL;
int main()
{
int i;
printf("*****************LINKED LIST********************");
while(i!=0)
{
printf("\nEnter \n1.Create linked list \n2.Traverse list\n3.search\n4.Reverse\n5.Delete\n6.Sort\n0.Exit:\n");
scanf("%d",&i);
switch(i)
{
case 1:
create();
break;
case 2:
traverse();
break;
case 3:
search();
break;
case 4:
reverse();
break;
case 5:
del();
break;
case 6:
sort();
break;
case 0:
exit(0);
break;
default:
printf("\n\tIncorrect value");
break;
}
}
return 0;
}
void create()//create linked list
{
int val; //info of d node
node *p,*prev; // next node
while(1)
{
printf(" Enter data (Enter -1 to exist) : ");
scanf("%d",&val);
if(val!=-1)
{
if(head==NULL)
{
p=(node*)malloc(sizeof(node)); // type of pointer=node, mem allocated for 1 node
p->next =NULL; //list ends
head=p; //makes it the first node
p->number =val; // puts d value
prev=p;
}
else
{
p=(node*)malloc(sizeof(node));
p->next=NULL;
prev->next=p;
p->number =val; // put value
prev=p;
}
}
else
break;
}
}
void traverse()//traverse list
{
node *p=head;
while(p!=NULL)
{
printf(" %d " ,p->number );
if(p->next!=NULL){
p=p->next->next;}
}
}
void reverse()
{
node *prev=NULL,*temp=NULL, *p=head;
while(p!=NULL)
{
if(p->next==NULL)
{head=p;}
temp=p->next;
p->next=prev;
prev=p;
p=temp;
}
traverse();
}
void search()//search by value
{
bool found=false;
node *p=head;
int i=0,val;
printf("Enter any number for search :");
scanf("%d",&val);
while(p!=NULL)
{
if(p->number ==val)
{
printf("\n\n\t\t\tThe value entered found at position %d\n\n\n",i);
found=true;
break;
}
else
{
i++;
p=p->next ;
//
//break;
}
}
if(!found)
{
printf("\n\n\t\tSearch ended Unsuccessfully. . . ! ! The value entered not found\n\n\n");}
}
int search2(int val)//search by value
{
bool found=false;
node *p=head;
int i=0;
while(p!=NULL)
{
if(p->number ==val)
{
return(i);
}
else
{
i++;
p=p->next ;
}
}
if(!found)
{
return -1;
}
}
void del()
{
int num,pos;
node *p,*temp=NULL,*prev=NULL;
printf("Enter the number you want to delete: ");
scanf("%d",&num);
pos=search2(num);
if(pos==-1)
{printf("Number Not Found\n");
return;
}
if(pos==0)
{
p=head;
head=p->next;
free(p);
}
else
{
p=head;
for(int i=0;i<pos;i++)
{
prev=p;
p=p->next;
}
prev->next=p->next;
free(p);
}
}
void sort()
{
int temp=0;
node *p,*nxt;
p=head;
while(p!=NULL)
{
nxt=p->next;
while(nxt!=NULL)
{
if(p->number>nxt->number)
{temp=nxt->number;
nxt->number=p->number;
p->number=temp;}
nxt=nxt->next;
}
p=p->next;
}
}
No comments:
Post a Comment