// Justin C. Miller
// University of Wisconsin Oshkosh
// Made for: http://www.geocities.com/neonprimetime.geo/index.html
// Date: 2001
// Borland Builder 4.0

#include 
#include 

struct flight_passenger{
        long reservation_number ;
        string last_name ;
        string first_name ;
        long telephone_number ;
        double fare ;
        flight_passenger *link ;
};

typedef flight_passenger *Nodeptr;

void insertion(Nodeptr&) ;
void deletion(Nodeptr&, long) ;
void check_memory(Nodeptr head)
{
        if(head == NULL)
        {
                cout << "There is insufficient memory" << endl ;
                exit(1) ;
        }
}

int main()
{
        Nodeptr head = new flight_passenger ;
        check_memory(head) ;
        head = NULL ;

        for(int x = 0 ; x < 2 ; x++)
                insertion(head) ;



        long res_number ;
        for(int y = 0 ; y < 2 ; y++)
        {
                cout << "Enter reservation number to delete" << endl ;
                cin >> res_number;
                deletion(head, res_number) ;
        }

        return 0 ;
}

void insertion(Nodeptr &head)
{
        Nodeptr temp_ptr = new flight_passenger ;
        check_memory(temp_ptr) ;

        cout << "Enter reservation #" << endl ;
        cin >> temp_ptr->reservation_number ;
        cout << "Enter last name" << endl ;
        cin >> temp_ptr->last_name ;
        cout << "Enter first name" << endl ;
        cin >> temp_ptr->first_name ;
        cout << "Enter telephone number (just the digits, no -)" << endl ;
        cin >> temp_ptr->telephone_number ;
        cout << "Enter fare " << endl ;
        cin >> temp_ptr->fare ;


        if(head== NULL)
        {
                temp_ptr->link = head ;
                head = temp_ptr ;
        }
        else
        {
                Nodeptr current, previous ;
                current = new flight_passenger ;
                check_memory(current) ;
                previous = new flight_passenger ;
                check_memory(previous) ;
                current = head ;
                while(((current->reservation_number) > (temp_ptr->reservation_number )) && (current->link != NULL))
                {
                        previous = current ;
                        current = current->link ;
                }

                previous->link = temp_ptr ;
                temp_ptr->link = current ;
        }

}

void deletion(Nodeptr &head, long reservation)
{
        Nodeptr current, previous ;
        current = new flight_passenger ;
        check_memory(current) ;
        previous = new flight_passenger ;
        check_memory(previous) ;
        current = head ;

        if(head->reservation_number == reservation)
        {
                head = (head->link) ;
                delete current ;
        }
        else
        {
                while((current->reservation_number != reservation)&&(current->link != NULL))
                {
                        previous = current ;
                        current = current->link ;
                }
                if(current == NULL)
                        cout << "Number not found!" << endl ;
                else
                {
                        previous->link = current->link ;
                        delete current ;
                }
        }
        return ;
}

    Source: geocities.com/neonprimetime.geo/cpp/cpp_SourceCode

               ( geocities.com/neonprimetime.geo/cpp)                   ( geocities.com/neonprimetime.geo)