- Método 1:
- Exclua o nó após o nó principal da lista vinculada unilateral, ou seja
头删法
, o código é o seguinte: - Código de amostra:
int delete_link_list_1(node_t *phead){
if(NULL == phead){
printf("入参为NULL\n");
return -1;
}
if(NULL == phead->next){
printf("链表只有一个头结点,无其他的结点\n");
return -1;
}
node_t *pdel = phead->next;
phead->next = pdel->next;
free(pdel);
pdel = NULL;
return 0;
}
- Passos:
- 1. Defina o nó a ser excluído
pdel
e aponte o campo ponteiro do nó principal para o endereço do nó a ser excluído, ou sejanode_t *pdel = phead->next
; - 2. O endereço do nó após o nó a ser excluído aponta para o campo ponteiro do nó principal, a saber
phead->next = pdel->next
; - 3. Utilize a função free para liberar o espaço ocupado pelo nó a ser excluído, a saber
free(pdel)
; - 4. Para evitar a geração de ponteiros curinga, atribua NULL ao endereço do nó a ser excluído, a saber
pdel = NULL
; - Método 2:
- Exclua o último nó da lista vinculada unilateral, ou seja
尾删法
, o código é o seguinte: - Código de amostra:
int delete_link_list_2(node_t *phead){
if(NULL == phead){
printf("入参为NULL\n");
return -1;
}
if(NULL == phead->next){
printf("链表只有一个头结点,无其他的结点\n");
return -1;
}
//遍历链表,找到倒数第二个结点
node_t *ptemp = phead;
while(NULL != ptemp->next->next){
ptemp = ptemp->next;
}
free(ptemp->next);
ptemp->next = NULL;
return 0;
}
-
Passos:
-
1. Use
while循环
, percorra a lista vinculada unidirecional, encontre倒数第二个结点
, ou sejaptemp
; -
2.
释放ptemp的指针域,并赋值NULL
, excluindo assim o último nó da lista vinculada; -
Método 3:
-
Especifique a posição do nó na lista vinculada e, em seguida
根据位置,删除待删结点
, o código é o seguinte: -
Código de amostra:
int delete_link_list_3(node_t *phead,int pos){
if(NULL == phead){
printf("入参为NULL\n");
return -1;
}
if(NULL == phead->next){
printf("链表只有一个头结点,无其他的结点\n");
return -1;
}
if(pos < 0){
printf("删除位置不合理,删除失败\n");
return -1;
}
node_t *ptemp = phead;
int i = 0;
for(i = 0; i < pos; i++){
ptemp = ptemp->next;
if(NULL == ptemp->next){
break;
}
}
if(i < pos){
printf("删除位置不合理,删除失败\n");
return -1;
}
node_t *pdel = ptemp->next;
ptemp->next = pdel->next;
free(pdel);
pdel = NULL;
return 0;
}
- Passos:
- 1. Encontre o nó anterior do nó a ser excluído
ptemp
; - 2. Defina o nó a ser excluído, deixe o campo ponteiro do nó antes do nó a ser excluído apontar para o endereço do nó a ser excluído e faça backup do nó a ser excluído, ou seja
node_t *pdel = ptemp->next
; - 3. O campo de ponteiro do nó a ser excluído aponta para o campo de ponteiro de um nó antes do nó a ser excluído, ou seja, o endereço do nó atrás do nó a ser excluído aponta para o campo de ponteiro de um nó antes do nó a ser excluído, a saber
ptemp->next = pdel->next
; - 4. Utilize a função free para liberar o espaço ocupado pelo nó a ser excluído, a saber
free(pdel)
; - 5. Para evitar a geração de ponteiros curinga, atribua NULL ao endereço do nó a ser excluído, a saber
pdel = NULL
;