Solved programming problem

Find Even and Odd Number from Single Linked List in C.

Source code

#include <stdio.h>

struct list

{

    int data;

    struct list *next;

};

typedef struct list node;

int find_even(node *head) ///find even

{

    node *temp = head;

    printf("
Even Value: 
");

    while(temp!=NULL)

    {

        if(temp->data%2==0)

        {

            printf("%d ",temp->data);

            temp= temp->next;

        }

        else temp = temp->next;

    }

    return;

}

int find_odd(node *head) ///find odd

{

    node *temp = head;

    printf("
Odd Value: 
");

    while(temp!=NULL)

    {

        if(temp->data%2!=0)

        {

            printf("%d ",temp->data);

            temp= temp->next;

        }

        else temp = temp->next;

    }

    printf("
");

    return;

}

int main()

{

    node *head,*start,*last,*temp;

    int flag;

    start=NULL;

    do

    {

        printf("Please Enter 1 To insert a value: ");

        scanf("%d",&flag);

        if(flag!=1)

        {

            break;

        }

        temp = (node *)malloc(sizeof(node));

        printf("Enter Value: ");

        scanf("%d",&temp->data);

        temp->next = NULL;

        if(start==NULL)  ///check the first value

        {

            start = temp;

            head =temp;

        }

        else

        {

            last = start;

            while(last->next!=NULL) ///find last index

            {

                last = last->next;

            }

            last->next= temp;  ///replace new value at last

        }

    }while(flag==1);

    find_even(head);

    find_odd(head);

    return 0;

}

Output

Please Enter 1 To insert a value: 1
Enter Value: 3
Please Enter 1 To insert a value: 1
Enter Value: 8
Please Enter 1 To insert a value: 1
Enter Value: 5
Please Enter 1 To insert a value: 1
Enter Value: 0
Please Enter 1 To insert a value: 0

Even Value:
8 0
Odd Value:
3 5

Join the discussion

Add your comment