删除列表中的节点

Deleting node in list

*x = L->list[i];      /* Save the deleted element to parameter x */
for(j = i+1; j <= L->size-1; j++)
L->list[i] = L->list[i+1];
L->size--;            /* The number of data elements is reduced by 1*/
return 1;

我无法完全删除节点,而不是这个,它只是替换值,但节点本身并没有被删除

在此for循环中

for(j = i+1; j <= L->size-1; j++)
L->list[i] = L->list[i+1];

此语句中使用的变量i

L->list[i] = L->list[i+1];

未更改。

你的意思好像是

for(j = i+1; j < L->size; j++)
    L->list[j-1] = L->list[j];

如果数组 list 是动态分配的,那么您应该重新分配它,例如

for(j = i+1; j < L->size; j++)
    L->list[j-1] = L->list[j];
L->size--;

T *tmp = realloc( L->list, L->size * sizeof( *tmp ) );
if ( tmp != NULL ) L->list = tmp;

您需要将 T 替换为数组元素的实际类型。我正在使用 T 因为从你的问题中不知道数组元素的类型是什么。