Im attempting my first linked list and it is near completion but i have a few error i cant understand. i have a attach, insert, remove_current functions, which add and remove elements from the list, i believe i got those working fine, but my copy constructor loops infinently when i try to clone the list. heres what i got
Code:
void Sequence::insert(const Sequence::value_type &entry)
{
if(head == NULL){ //Insertion for first item
head = new Node(entry, head);
tail = head;
cur = head;
++many_nodes;
return;
}
else if(cur == head || cur == NULL){
head = new Node(entry, head);
cur = head;
++many_nodes;
return;
}
else{
pre->next = new Node(entry, cur);
cur = pre->next;
++many_nodes;
}
}
Code:
void Sequence::attach(const value_type &entry)
{
if( head == NULL){
head = new Node(entry, head);
cur = head;
tail = head;
++many_nodes;
return;
}
else if (cur == tail) {
cur->next = new Node(entry, cur->next);
pre = cur;
cur = cur->next;
tail = cur;
++many_nodes;
return;
}
else if (cur == NULL){
tail->next = new Node(entry, tail->next);
tail = tail->next;
cur = tail;
++many_nodes;
return;
}
else{
cur->next = new Node(entry, cur->next);
pre = cur;
cur = cur->next;
}
++many_nodes;
}
Code:
void Sequence::remove_current()
throw(std::out_of_range)
{
Node * tmp = NULL;
if(cur == NULL) return;
if(cur == head && tail == head){
tmp = head;
head = head->next;
cur = head;
tail = head;
--many_nodes;
return;
}
if(cur == head){
tmp = head;
head = head->next;
cur = head;
delete tmp;
--many_nodes;
return;
}
else if (cur == tail){
tmp = cur;
cur = cur->next;
tail = pre;
delete tmp;
--many_nodes;
return;
}
else{
tmp = cur;
cur = cur->next;
pre->next = cur;
delete tmp;
}
--many_nodes;
}
Copy Constructor:
Code:
Sequence::Sequence(const Sequence& from)
: head(NULL), tail(NULL), cur(NULL), pre(NULL), many_nodes(0)
{
do_copy(from);
}
void Sequence::do_copy(const Sequence& from) {
start();
for(Node * p = from.head; p != NULL; p = p->next){
attach(p->data);
}
}
Thanks alot!!!