-
Notifications
You must be signed in to change notification settings - Fork 1
/
Linear_search_in_a_linked_list.c
96 lines (96 loc) · 2.22 KB
/
Linear_search_in_a_linked_list.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
} *first = NULL;
void create(int A[], int n)
{
first = (struct node *)malloc(sizeof(struct node));
(*(first)).data = A[0];
(*(first)).next = NULL;
struct node *t, *last;
last = first;
for (int i = 1; i < n; i++)
{
t = (struct node *)malloc(sizeof(struct node));
(*(t)).data = A[i];
(*(t)).next = NULL;
(*(last)).next = t;
last = t;
}
}
void display(struct node *p)
{
while (p != NULL)
{
printf("%d\t", (*(p)).data);
p = (*(p)).next;
}
}
int linear_search(struct node *p, int n)
{
static int count = 1;
while (p != NULL)
{
if ((*(p)).data != n)
{
p = (*(p)).next;
count++;
}
else
{
return count; /*As soon as function encounters any of the return
statements ,it breaks out from the function and function is not
executed further .So, though repetitions of any elemental data
may occur in the linked list but function will return only
the position of the first place at which it finds the required
element.*/
}
}
return (-1);
}
struct node *lsearch_address(struct node *p, int n)
{
while (p != NULL)
{
if ((*(p)).data == n)
{
return p;
}
else
{
p = (*(p)).next;
}
}
return NULL;
}
struct node *recursive_lsearch_address(struct node *p, int n)
{
if (p != NULL)
{
if ((*(p)).data != n)
{
recursive_lsearch_address((*(p)).next, n);
}
else
{
return p;
}
}
else
{
return NULL;
}
}
int main()
{
int A[10] = {10, 20, 40, 40, 40, 60, 970, 80, 90, 100};
create(A, 10);
display(first);
printf("\nEnter the number to be found:\n");
int num;
scanf("%d", &num);
printf("\n%d is found at node:%x.\n", num, recursive_lsearch_address(first, num));
}