typedef struct node
{
int data;
struct node* link;
} node ;
node* create_node(int data)
{
node* new_node = (struct node*)malloc(sizeof(struct node));
new_node->data = data;
new_node->link = NULL;
return new_node;
}
//// Iterative method ---------------------------------------------
void insert_at_first(node** head, int data)
{
node* new_node = create_node(data);
if(*head == NULL)
{
*head = new_node;
return;
}
new_node->link = (*head);
(*head) = new_node;
return;
}
void insert_at_last(node** head, int data)
{
node* new_node = create_node(data);
if(*head == NULL)
{
*head = new_node;
return;
}
node* temp = *head;
while(temp->link != NULL)
temp = temp->link;
temp->link= new_node;
return;
}
void insert_in_order(node** head, int data)
{
node* new_node = create_node(data);
if(*head == NULL)
{
*head = new_node;
return;
}
node* temp = (*head);
while(temp->link != NULL && temp->link->data < data)
temp = temp->link;
new_node->link = temp->link;
temp->link = new_node;
return;
}
void print_list(node* head)
{
if(head == NULL)
cout << "List is empty!" << endl;
else
{
while(head)
{
cout << head->data << " ";
head = head->link;
}
cout << endl;
}
}