I think you made it a bit too complicated. The only case you have to handle explicitly is adding a node to the end. A simple while loop should take care of the rest.
Code:
while( plnCurr->sWord < newWord ){
if( plnCurr->plnNext = NULL ){ //handle case of last node
break;
}
plnCurr = plnCurr->plnNext;
}
DListNode* plnNew = new DListNode(rsNewData);
plnNew->plnPrev = plnCurr;
plnNew->plnNext = plnCurr->next;
plnCurr->plnNext = plnNew;
EDIT:Arg, I was off by one!