Untitled
unknown
c_cpp
8 days ago
2.2 kB
2
Indexable
Never
#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