I'm trying to implement a Linked List following this example.
Here is a resume what's going on:
class Node {
    public:
        string name; 
        int number;
        Node *next;
        Node () {
            next = NULL;
        }
        Node (string _name, int _number) {
            name = _name;
            number = _number;
            next = NULL;
        }
};
class List {
    public:
        Node *head; 
        List () {
            head = NULL;
        }
        void push_back (string _name, int _number) {
            Node *neww = neww Node;
            neww->name = _name;
            neww->number = _number;
            if (head == NULL)
                head = neww;
            else {
                Node *whre = head;
                while (whre->next)
                    whre = whre->next;
                whre->next = neww;
            }
        }
        bool find (int _number) {
            Node *pointer = new Node;
            if (!head)
                return false;
            pointer = head;
            for (; pointer; pointer = pointer->next)
                if (pointer->number == _number)
                    return true;
            return false;
        }
        bool delete_item (int _number) {
            Node *pointer = new Node;
            if (!find(_number))
                return false;
            while (head->number == _number) //problem is here
                head = head->next;
            if (!head)
                return false;
            pointer = head;
            while (pointer) {
                if (pointer->next)
                    if (pointer->next->number == _number)
                        pointer->next = pointer->next->next;
                pointer = pointer->next;
            }
            return true;
        }
};
At main(), I created a List object, pushed a element and deleted it. Worked fine.
But when I use a switch-case menu to make things more dinamically, I got this error:
program received signal SIGSEGV, segmentation fault
I've no idea what this error means and didn't find help at google.
I'm using the delete_item() in the same situation, except by the swtich-case menu.
Any hints what I can do? Or just an explanation of this error.
Here is the case where I try to delete:
int number, choice;
do {
    cin >> choice;
    switch(choice){
        [...]
        case 5:{
            cout << "Number: ";
            cin >> number;
            if(!list_obj.delete_item(number))
                cout << "Not found." << endl;
            else
                cout << "Deleted." << endl;
            system("PAUSE");
            system("cls");
            break;
        }
        [...]
Any hints to improve the question will be Welcome.
 
     
    