C 語言例項11——雙鏈表刪除
阿新 • • 發佈:2018-12-16
/*雙鏈表的刪除 ** 把一個值插入到雙鏈表,rootp是一個指向根節點的指標 ** del 是指向欲移除節點的指標 ** 返回值: ** 如果連結串列不包含移除的節點,函式就返回假,否則返回真。 */ int dll_remove(Node *rootp, Node *del) { register Node *thist; assert( del != NULL); for(thist=rootp->fwd; thist != NULL; thist = thist->fwd) if(thist == del) break; if(thist == del) { /* ** Update fwd pointer of the previous node. */ if( thist->bwd == NULL ) rootp->fwd = thist->fwd; else thist->bwd->fwd = thist->fwd; /* ** Update bwd pointer of the next node. */ if( thist->fwd == NULL ) rootp->bwd = thist->bwd; else thist->fwd->bwd = thist->bwd; free( thist ); return TRUE; } else return FALSE; }