C Single Linked List

#include

struct node
{
int value;
struct node* next;
}node;

struct node* root = NULL;
void delete(int value_temp)
{
struct node* node_pre=NULL;
struct node* node_temp = root;
if(node_temp == NULL)
return;
do
{
if(node_temp->value == value_temp)
{
node_pre->next = node_temp->next;
break;
}
node_pre=node_temp;
node_temp=node_temp->next;
}while(node_temp);

}
void insert_end(int value_temp)
{
struct node* node_temp = NULL;
struct node* node_new=malloc(sizeof(node));
node_new->value = value_temp;
node_new->next = NULL;

if(root == NULL)
{
root = node_new;
return;
}
node_temp = root;
while(node_temp->next)
node_temp=node_temp->next;

node_temp->next = node_new;
return;
}

void insert_front(int value_temp)
{
struct node* node_new=malloc(sizeof(node));
node_new->value = value_temp;
node_new->next = NULL;

if(root == NULL)
{
root = node_new;
return;
}

node_new->next = root;
root = node_new;

}

void reverse()
{
struct node* node_temp=NULL;
struct node* node_pre=NULL;
struct node* node_next=NULL;

node_temp=root;
while(node_temp)
{
node_next = node_temp->next;
node_temp->next = node_pre;
node_pre=node_temp;
node_temp = node_next;
}
root = node_pre;
}

void printDATA()
{

struct node* node_temp = root;
while(node_temp)
{
printf("%d   ",node_temp->value);
node_temp=node_temp->next;
}
printf("\n\n");
}

int main()
{

insert_front(5);
insert_front(4);
insert_front(3);
insert_front(2);
insert_front(1);
insert_end(6);
insert_end(7);
insert_end(8);
insert_end(9);
printDATA();
delete(8);
printDATA();

reverse();
printDATA();

return 0;
}

No comments :

Post a Comment