diff --git a/list/list.h b/list/list.h index 9b069db..f8b35a8 100644 --- a/list/list.h +++ b/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; +}