start_node its the node which search should be start for deleting nodes(if you don't find meaning with it, me either but i have to use it
Code:
node_t * locate_node(list_t * l, node_t *start_node, int pos){
int i;
node_t *pointer=start_node;
for(i=1;i<pos;i++)
pointer=pointer->next;
return pointer;
}
void node_delete(list_t *l, node_t* start_node, int pos) {
node_t *cur;
node_t *pre=NULL;
for(cur=l->head;cur!=start_node;pre=cur,cur=cur->next);
if(pre==NULL)
pre=l->tail;
node_t *pointer=locate_node(l,start_node,pos);
pre->next=pointer->next;
free(pointer);
(l->size)--;
if(l->d)
print_list(l);
}