我有以下代码工作正常,除了当一个元素被删除时,它会从父结构中删除。我需要父母结构(first_name)与所有元素保持不变:
struct names_list {
char username[20];
struct names_list * next;
};
pthread_mutex_t name_list;
int retu = 0;
char username[20];
struct names_list * curr_name = first_name;
struct names_list * temp_name = NULL;
while( curr_name != NULL )
{
pthread_mutex_lock(&name_list);
strncpy(username, curr_name->username, sizeof( username ) - 1 );
pthread_mutex_unlock(&name_list);
//validate
retu = validate_name(sock,buff,sizeof(buff),username,domain);
switch ( retu )
{
case 0:
pthread_mutex_lock(&name_list);
if (temp_name == NULL)
first_name = curr_name->next; //this is used for removing when current is first record
else
temp_name->next = curr_name->next; //this is used for removing current record from mid-list
free(curr_name);//Freeing should be needed
curr_name = curr_name->next;
pthread_mutex_unlock(&name_list);
break;
case 1:
pthread_mutex_lock(&name_list);
temp_name = curr_name;
curr_name = curr_name->next;
pthread_mutex_unlock(&name_list);
break;
}
if (retu == 2)
break;
}
pthread_mutex_lock(&name_list);
curr_name = first_name;
pthread_mutex_unlock(&name_list);
*如何仅从 curr_name 中删除元素并将原始结构保留在 first_name 中?*