搞定了remove和pop,但是会出现内存泄漏的情况。
This commit is contained in:
parent
656658a0ef
commit
afd8cc01a5
66
list/list.h
66
list/list.h
@ -39,3 +39,69 @@ int insertInTail(List *p_list, Node *p_node){
|
||||
p_list->tail = p_node;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int removeById(List *p_list, unsigned long id){
|
||||
Node *tmp = p_list->head;
|
||||
if(tmp == NULL)
|
||||
return -1;//这说明p_list指向空列表
|
||||
|
||||
do{
|
||||
if( *(tmp->value) == id ){
|
||||
tmp->last->next = tmp->next;
|
||||
tmp->next->last = tmp->last;
|
||||
return 1;//找到了
|
||||
}
|
||||
else
|
||||
tmp = tmp->next;
|
||||
}while(tmp != NULL)
|
||||
|
||||
return 0;//没找到
|
||||
}
|
||||
|
||||
int removeByNode(List *p_list, Node *p_node){
|
||||
Node *tmp = p_list->head;
|
||||
if(tmp == NULL)
|
||||
return -1;//这说明p_list指向空列表
|
||||
|
||||
do{
|
||||
if(tmp == p_node){
|
||||
tmp->last->next = tmp->next;
|
||||
tmp->next->last = tmp->last;
|
||||
return 1;//找到了
|
||||
}
|
||||
else
|
||||
tmp = tmp->next;
|
||||
}while(tmp != NULL)
|
||||
|
||||
return 0;//没找到
|
||||
}
|
||||
|
||||
int popFromHead(List *p_list){
|
||||
if(p_list->head == NULL)
|
||||
return -1;
|
||||
|
||||
if(p_list->head->next == NULL){
|
||||
p_list->head = NULL;
|
||||
p_list->tail = NULL;
|
||||
}
|
||||
else{
|
||||
p_list->head->next->last = NULL;
|
||||
p_list->head = p_list->head->next;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int popFromTail(List *p_list){
|
||||
if(p_list->head == NULL)
|
||||
return -1;
|
||||
|
||||
if(p_list->head->next == NULL){
|
||||
p_list->head = NULL;
|
||||
p_list->tail = NULL;
|
||||
}
|
||||
else{
|
||||
p_list->tail->last->next = NULL;
|
||||
p_list->tail = p_list->tail->last;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user