在c语言中删除链表中的节点
目前我的代码有一个小问题。 我必须删除喜欢列表的某些节点,该列表包含用户通过键盘输入的相同字符串。我使用这个家伙代码作为模板: 我遇到的问题是,由于某种原因,te方法正在对列表中前一个节点的某些信息进行勘误。 这是我的密码:在c语言中删除链表中的节点,c,string,linked-list,keyboard,C,String,Linked List,Keyboard,目前我的代码有一个小问题。 我必须删除喜欢列表的某些节点,该列表包含用户通过键盘输入的相同字符串。我使用这个家伙代码作为模板: 我遇到的问题是,由于某种原因,te方法正在对列表中前一个节点的某些信息进行勘误。 这是我的密码: void wificollector_delete_net(struct access_point *l) { char* dESSID; int i=0; dESSID=(char*)malloc(sizeof(char)*10); st
void wificollector_delete_net(struct access_point *l)
{
char* dESSID;
int i=0;
dESSID=(char*)malloc(sizeof(char)*10);
struct access_point *delete;
struct access_point *prev;
delete=(struct access_point *)malloc(sizeof(struct access_point)*50);
prev=(struct access_point *)malloc(sizeof(struct access_point)*50);
printf("Indicate the ESSID (between “”):\n");
scanf(" %s", dESSID);
printf("%s\n",dESSID);
prev=NULL;
delete=l->next;
while(delete!=NULL && strcmp(delete->ESSID,dESSID)==0){
prev=delete;
delete=delete->next;
free(prev->MAC);
free(prev->ESSID);
free(prev->modo);
free(prev->cifrado);
free(prev);
i++;
}
while(delete!=NULL){
if(strcmp(delete->ESSID,dESSID)==0){
if(prev!=NULL){
prev->next=delete->next;
}
free(prev->MAC);
free(prev->ESSID);
free(prev->modo);
free(prev->cifrado);
free(prev);
delete=prev->next;
i++;
}else{
prev=delete;
delete=delete->next;
}
}
}
谢谢你的帮助。那代码漏洞百出。C不是Java。您不必
malloc
一切。和删除->=NULL甚至不是有效的C代码。为了让事情变得更清楚,我首先将要从这个函数中删除的essid的集合移出,并将其作为参数传入。让它只做一件事:搜索和销毁。非常感谢你的帮助,如果你看到非常新的错误,很抱歉,我已经使用c不到4个月了,我几乎是一个婴儿编程。