Here is a snippet. Basically, when I try to run this code, it'll crash. This revised function is most likely the culprit (I had it written differently before, and it worked just fine). 

```
Link *add_after(Link *p, Link *n,const string& s )
{  
    Link *current = p; //No 'previous' needed.
    /* empty list */         
    if(p == 0){              
        cout<<"List is empty so string not found so nothing is added after it. \n";
        return 0;                                  
    }
    else if(p->value == s){ //Checks first Link.
        cout << s << " was found in the Linked List. The new Link will be added.\n";
        n->next = p->next;                              
        p->next = n;                                             
        return p;                                                         
    }
    else{                              
        current = current->next;                    
        while(current != 0){ //Check the rest of the Linked List.
            if(current->value == s){                                          
                cout << s << " was found in the Linked List. The new Link will be added.\n";                       n->next = current->next;
                current->next = n;                                                                                  
                return p;                                                                                                            
            }                                                                                                                                         
            current = current->next;                                                                                                                                    }
        return 0;                                                                          
    }
}  // end of function                                                 

```