hey whats wrong in my linked list…its goin into infinite loop in DEV C
bt running in turbo c.
#include <stdio.h>
#include <malloc.h>
/* structure containing a data part and link part */
struct node
{
int data ;
struct node *link ;
};
void add ( struct node **, int ) ;
void display ( struct node * ) ;
int main( )
{
struct node *p ;
p = NULL ;
add ( &p, 5 ) ;
add ( &p, 1 ) ;
add ( &p, 6 ) ;
add ( &p, 4 ) ;
add ( &p, 7 ) ;
display ( p ) ;
return 0;
}
void add ( struct node **q, int num )
{
struct node *r, *temp = *q ;
r = (struct node*)malloc( sizeof(struct node) ) ;
r -> data = num ;
r -> link = NULL;
/* if list is empty or if new node is to be inserted before the first node */
if ( *q == NULL || (*q) -> data > num )
{
*q = r ;
(*q) -> link = temp ;
}
else
{
/* traverse the entire linked list to search the position to insert the new node */
while ( temp != NULL )
{
if ( temp -> data <= num && ( temp -> link -> data > num || temp -> link == NULL ))
{
r -> link = temp -> link ;
temp -> link = r ;
return ;
}
temp = temp -> link ; /* go to the next node */
}
}
}
/* displays the contents of the linked list */
void display ( struct node *q )
{
printf("\n");
while ( q != NULL )
{
printf ( "%d ", q -> data ) ;
q = q -> link ;
}
}