pratzz
Member level 5
Code:
#include <stdio.h>
// Variables
typedef struct node
{
int value;
struct node *next;
}mynode;
// Globals (not required, though).
mynode *head, *tail, *temp;
// Functions
void add(int value);
mynode *reverse(mynode*);
void print_list();
// The main() function
int main()
{
head=(mynode *)0;
// Construct the linked list.
add(1);
add(2);
add(3);
//Print it
print_list();
if(head != (mynode *)0)
{
temp = reverse(head);
temp->next = (mynode *)0;
}
print_list();
return(0);
}
// Function to add new nodes to the linked list
void add(int value)
{
temp = (mynode *) malloc(sizeof(struct node));
temp->next=(mynode *)0;
temp->value=value;
if(head==(mynode *)0)
{
head=temp;
tail=temp;
}
else
{
tail->next=temp;
tail=temp;
}
}
// Function to print the linked list.
void print_list()
{
printf("\n\n");
for(temp=head; temp!=(mynode *)0; temp=temp->next)
{
printf("[%d]->",(temp->value));
}
printf("[NULL]\n\n");
}
mynode * reverse(mynode * root)
{
if(root->next!=NULL)
{
reverse(root->next);
root->next->next=root;
return(root);
}
else head=root;
}
i am unable to understand the functionnng of this code.can anybody help me?