[ create a new paste ] login | about

Link: http://codepad.org/cVQgJYjM    [ raw code | output | fork ]

C++, pasted on May 21:
#include <iostream>
using namespace std;

struct Node {
    int data;
    Node* next;
};

Node* arrayToList(const int arr[], size_t size) {
    Node*  list = /*nullptr*/0;
    Node*  item = /*nullptr*/0;
    if(!size) return 0;
    for( size_t elem = 0; elem < size; elem++ )
    {
        Node * a = new Node;
        a->data = arr[elem];
        a->next = 0;
        if( item )
		{
            item->next = a;
			item = item->next;
		}
        else
            list =item = a;
    }
    return list;
 
}

Node* removeOdd(Node* head) {
    Node*  list = /*nullptr*/0;
    Node*  item = /*nullptr*/0;
    Node*  prev = /*nullptr*/0;
    if ( (item = prev = head) != 0 )
    {
        for( item = item->next; item; item = item->next )
        {
            if( item->data % 2 )
            {
                prev->next = item->next;
                cout<<"delete : "<<item->data<<endl;
                delete item;
                item = prev;
            }
            else
                prev = item;
        }
        if( head->data % 2 )
        {
            list = head->next;
            cout<<"delete : "<<head->data<<endl;
            delete head;
        }
    }
    return list;
}
 
void showList(const Node* head) {
    
    if (! head) {
        cout << "List is empty" << endl;
    return;
    }
    else
    {
        Node *list = const_cast<Node*>(head);
        while(list)
        {
            cout << list->data << " ";
            list  = list->next;
        }
        cout << endl;
    }
}
 

int main(){
    int arr[] = {1,2,3,4,5,6};
    size_t size = sizeof(arr)/sizeof(*arr);
    Node* list  = arrayToList(arr, size);
    showList(list);
    list = removeOdd(list);
    showList(list);
	cin.get();
    return 0;
}


Output:
1
2
3
4
5
1 2 3 4 5 6 
delete : 3
delete : 5
delete : 1
2 4 6 


Create a new paste based on this one


Comments: