Untitled
unknown
c_cpp
a year ago
2.2 kB
12
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;
}Editor is loading...
Leave a Comment