代码实现
st_doubNode * removeDoubListNode(st_doubNode** phead, int pos){
if(NULL == phead || pos < 0){
printf("%s: param error\n",__func__);
return NULL;
}
st_doubNode * head = *phead;
st_doubNode * p = NULL;
st_doubNode * q = NULL;
st_doubNode * nw = NULL;
if(0 == pos) { /*首节点*/
/*摘掉*/
nw = head;
p = head->next;
p->prev = NULL;
/*清除*/
nw->next = NULL;
nw->prev = NULL;
/*更新头*/
head = p;
} else { /* 其他节点 */
nw = findDoubListPos(head, pos);
p = nw->next;
q = nw->prev;
p->prev = q;
q->next = p;
nw->next = NULL;
nw->prev = NULL;
}
*phead = head;
return nw;
}
void testremoveDoubListNode(void){
st_doubNode * nw = NULL;
printf("\n************ testremoveDoubListNode ************ \n");
nw = removeDoubListNode(&gDoubHead, 11);
if(NULL != n