#include <stdio.h>
#include <stdlib.h>
typedef struct nodoLista{
int valore;
struct nodoLista *nextPtr;
} Lista;
void print_list(Lista *ptr);
void ord_insert(Lista **ptrPtr, int val);
void clone_list(Lista *srcPtr, Lista **destPtr);
void print_list_inv(Lista *ptr);
int main() {
Lista *mylist = NULL;
ord_insert(&mylist , 29);
ord_insert(&mylist , 5);
ord_insert(&mylist , 32);
ord_insert(&mylist , 93);
print_list(mylist);
Lista *clonedlist = NULL;
clone_list(mylist, &clonedlist);
print_list_inv(clonedlist);
return 0;
}
void print_list(Lista *ptr) {
while (ptr != NULL) {
printf("%d ", ptr->valore);
ptr = ptr->nextPtr;
}
printf("\n");
}
void ord_insert(Lista **ptrPtr, int val){
while(*ptrPtr != NULL && (*ptrPtr)->valore < val){
ptrPtr = &((*ptrPtr)->nextPtr);
}
Lista *nuovo_nodo = (Lista *)malloc(sizeof(Lista));
nuovo_nodo->valore = val;
nuovo_nodo->nextPtr = *ptrPtr;
//modifico il (*ptrPtr)->nextPtr
*ptrPtr = nuovo_nodo;
}
void clone_list(Lista *srcPtr, Lista **destPtr){
if(srcPtr == NULL){
*destPtr = NULL; // <-- CORRETTO: chiudiamo la catena
return;
}
*destPtr = (Lista *)malloc(sizeof(Lista));
(*destPtr)->valore = srcPtr->valore;
clone_list(srcPtr->nextPtr, &((*destPtr)->nextPtr));
}
void print_list_inv(Lista *ptr){
if(ptr==NULL)
return;
print_list_inv(ptr->nextPtr);
printf("%d ", ptr->valore);
}
To embed this project on your website, copy the following code and paste it into your website's HTML: