Untitled

mail@pastecode.io avatar
unknown
c_cpp
4 months ago
2.2 kB
2
Indexable
#include <stdio.h>
#include <stdlib.h>

typedef struct nodo_{
	char car;
	struct nodo_ *next;
}nodo_t; 

nodo_t* creaNodo(char car){
	nodo_t* nuovo= (nodo_t*)malloc(sizeof(nodo_t));
	if(nuovo==NULL){
		return NULL; 
	}else{
		nuovo->car=car;
		nuovo->next=NULL; 
	}
	return nuovo; 
}

nodo_t* inserisciCoda(nodo_t*head, char car){
	nodo_t*nuovo=creaNodo(car);
	if(head==NULL){
		return nuovo;
	}
	nodo_t*corrente=head;
	while(corrente->next!=NULL){
		corrente=corrente->next;
	}
	corrente->next=nuovo;
	return head;
}


nodo_t* restituisci_lista(nodo_t* l1, nodo_t* l2){
	if(l1==NULL && l2==NULL){
		return NULL;
	}else if (l1 == NULL){
	    return l2;
	}else if(l2 == NULL){
	    return l1;
	}
	
	
	nodo_t* curr1=l1;
	nodo_t* curr2=l2;
	nodo_t* l3=NULL;  

while(curr1!=NULL && curr2!=NULL){
    
    if(curr1->car <= curr2->car)
    {
        l3 = inserisciCoda(l3, curr1->car);
        curr1 = curr1->next;
    }else{
        l3 = inserisciCoda(l3, curr2->car);
        curr2 = curr2->next;
    }


}
while(curr1!=NULL){
	l3=inserisciCoda(l3, curr1->car);
	curr1=curr1->next;
}
while(curr2!=NULL){
	l3=inserisciCoda(l3, curr2->car);
	curr2=curr2->next;
}
return l3; 
}

void stampalista(nodo_t* head) {
    nodo_t* corrente = head;
    while (corrente != NULL) {
        printf("%c -> ", corrente->car);
        corrente = corrente->next;
    }
    printf("|\n");
}


int main() {
    nodo_t* L1 = NULL;
    nodo_t* L2 = NULL;


    L1 = inserisciCoda(L1, 'S');
    L1 = inserisciCoda(L1, 'T');
    L1 = inserisciCoda(L1, 'O');
    L1 = inserisciCoda(L1, 'P');
    L1 = inserisciCoda(L1, 'i');
    L1 = inserisciCoda(L1, 't');
    L1 = inserisciCoda(L1, 'N');
    L1 = inserisciCoda(L1, 'o');
    L1 = inserisciCoda(L1, 'w');
    L1 = inserisciCoda(L1, '!');

    
    L2 = inserisciCoda(L2, 'E');
    L2 = inserisciCoda(L2, 'N');
    L2 = inserisciCoda(L2, 'C');
    L2 = inserisciCoda(L2, 'o');
    L2 = inserisciCoda(L2, 'd');
    L2 = inserisciCoda(L2, 'e');

    printf("Lista L1:\n");
    stampalista(L1);

    printf("Lista L2:\n");
    stampalista(L2);

    nodo_t* L3 = restituisci_lista(L1, L2);
    printf("Lista L3:\n");
    stampalista(L3);

    return 0;
}
Leave a Comment