Searching in Linked List
Sequential search is the most common search used on linked list structures.Algorithm
Step-1: Initialise the Current pointer with the beginning of the List. Step-2: Compare the KEY value with the Current node value; if they match then quit there else go to step-3. Step-3: Move the Current pointer to point to the next node in the list and go to step-2, till the list is not over or else quit.
Example
/*Search An Element in Linked List*/
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
struct node
{
int data;
struct node *next;
}
first, *nw;
int search(int);
void main()
{
int no,i,item,pos;
clrscr();
first.next=NULL;
nw=&first;
printf("Enter The No of nodes, you want in linked list: ");
scanf("%d",&no);
printf("\n");
for(i=0;i< no;i++)
{
nw->next=(struct node *)malloc(sizeof(struct node));
printf("Enter element in node %d: ",i+1);
scanf("%d",&nw->data);
nw=nw->next;
}
nw->next=NULL;
printf("Linked list is:\n");
nw=&first;
while(nw->next!=NULL)
{
printf("%d\t",nw->data);
nw=nw->next;
}
printf("\n");
printf("Enter item to be searched : ");
scanf("%d",&item);
pos=search(item);
if(pos<=no)
printf("Your item is at node=%d",pos);
else
printf("Sorry! your item is not in linked list.");
getch();
}
int search(int item)
{
int count=1;
nw=&first;
while(nw->next!=NULL)
{
if(nw->data==item)
break;
else
count++;
nw=nw->next;
}
return count;
}
Output
