Тема: однонаправлені списки(допоможіть переробити)

#include <iostream>
#include <windows.h>
using namespace std;

class Node
{
   public:
        char number;
          Node* next;
};

void act(const char*);

int main()
{
    Node* head = NULL;
    Node* lastPtr = NULL;
    short action = -1;
    while (1)
    {
        act("1-добавити цифру у список\n");
        act("2-перглянути два списки\n");
        act("0-вихiд\n\n");
        act("Ваш Вибiр: ");
        cin>>action;
        
        if (action == 0)
        {
            system("cls");
            break;
        }

        if (action == 1)
        {
            system("cls");
            Node* ptr = new Node;
            char numb;
            act("Введiть Число: ");
            cin>>numb;
            ptr->number = numb;
            ptr->next = NULL;
            if (head == 0)
            {
                head = ptr;
                lastPtr = ptr;
                system("cls");
                continue;
            }
            lastPtr->next = ptr;
            lastPtr = ptr;
            system("cls");
            continue;
        }
    
       if (action == 2)
        {   int* i=0;
             Node* ptr = NULL;
             system("cls");
            if (head == NULL)
            {
                act("\tНа даний момент список пустий!\n\n");
                system("pause");
                system("cls");
                continue;
            }
            act("     Список\n\n");
            ptr = head;
            cout<<"s1 : ";
            while (1)
            {
                cout<<" "<< ptr->number<<" ";
                if (ptr->next == 0)
                    break;
                ptr = ptr->next;
            }
            cout<<"\n";
            
            ptr=head;
            cout<<"s2 : ";
                while (2)
            {
                if(ptr->number%2==0)
                {
                    cout<<" "<< ptr->number<<" ";
                }          
                
                if (ptr->next == 0)
                    break;
                ptr = ptr->next;
            }
            cout<<"\n\n";
            system("pause");
            system("cls");
            continue;
        } 
    }    
}

void act(const char* rus)
{
    char word[100];
    CharToOemA(rus, word);
    cout<<word;
}

Потрібно переробити, на умову: сформувати дваоднонапрвлені списки S1 та S2, сформувати список S3, куди ввійдуть лише не парні елементи обидвох списків. вивести всі списки на друк...