Tim,
I only time to look at one file. In Sequence.cpp I found this function. I believe this may cause a problem if the index is not valid.
SeqItemType Sequence::retrieve(int index)
{
if ((index < 1) || (index > size())){
// can't delete something that isn't there
}
ListNode *cur = find(index);
return cur->item;
}
If the expression in the if statement is true it will still do the last bit of code, unless you wanted and if-else structure.
The find(index) will return zero if index is not valid. Then when it tries to resolve cur->item, that might give you a problem. Look at your code and see if you are ever returning 0 that will be used in a cur->item context. Check for 0. If it is, return or move on without doing anything.