// SSLinkList.cpp // Code for an unsorted linked list. #include "SSLinkList.h" SSLinkList::SSLinkList() { head=0; } SSLinkList::~SSLinkList() { while(head) { Node *victim=head; head=head->next; delete victim; } } void SSLinkList::deleteAll() { while(head) { Node *victim=head; head=head->next; delete victim->data; delete victim; } } void SSLinkList::add(SubStr *s) { Node *nnode=new Node; nnode->data=s; nnode->next=head; head=nnode; } SubStr *SSLinkList::remove(const SubStr &s) { for(Node *rover=head,*prev=0; rover!=0; prev=rover,rover=rover->next) { if(s.compare(*(rover->data))==0) { if(prev==0) { head=rover->next; } else { prev->next=rover->next; } rover->next=0; SubStr *ret=rover->data; delete rover; return ret; } } return 0; } SubStr *SSLinkList::remove(const string &s) { for(Node *rover=head,*prev=0; rover!=0; prev=rover,rover=rover->next) { if(rover->data->compare(s)==0) { if(prev==0) { head=rover->next; } else { prev->next=rover->next; } rover->next=0; SubStr *ret=rover->data; delete rover; return ret; } } return 0; } SubStr *SSLinkList::search(const SubStr &s) { for(Node *rover=head; rover!=0; rover=rover->next) { if(s.compare(*(rover->data))==0) { return rover->data; } } return 0; } SubStr *SSLinkList::search(const string &s) { for(Node *rover=head; rover!=0; rover=rover->next) { if(rover->data->compare(s)==0) { return rover->data; } } return 0; } void SSLinkList::print() const { for(Node *rover=head; rover!=0; rover=rover->next) rover->data->print(); }