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.