Untitled

 avatar
unknown
c_cpp
2 months ago
791 B
3
Indexable
typedef struct nodo_{
	int num;
	struct nodo_ *next;
} nodo_t;

nodo_t* duplica(nodo_t* corrente){

	nodo_t *nuovo=(nodo_t*)malloc(sizeof(nodo_t));
	if(nuovo==NULL){
		return NULL; 
	}
	nuovo->num=corrente->num;
	nuovo->next=corrente->next;
	corrente->next=nuovo;
	return nuovo; 

	}

	nodo_t* rimuovinodo(nodo_t* curr, nodo_t* prec){
		if(curr==NULL){
			return NULL;
		}
		if(prec==NULL){
			curr=curr->next;
			free(curr);
			return curr;
		}else{
		prec->next=curr->next;
		free(curr);
		return prec->next;

		}
		
	}


nodo_t* manipolalista(nodo_t* l1){
	nodo_t* curr=l1;
	nodo_t* prec=NULL; 

	while(curr){
		if(curr->num%2==0){
			curr=duplica(curr);
			curr=curr->next;

		}else if(curr->num<0){
			curr=rimuovinodo(curr, prec);

	}

	prec=curr; 
	curr=curr->next;

}

 return l1;

}
Editor is loading...
Leave a Comment