Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- //List structure:
- struct El {
- int info;
- struct El *next;
- };
- typedef struct El ElementoLista;
- typedef ElementoLista *ListaDiElementi;
- // Functions/Procedure to be implemented:
- void readList(ListaDiElementi *lista)
- {int prec=0;
- int corr=0;
- ListaDiElementi first=malloc(sizeof(ElementoLista));
- ListaDiElementi item=first;
- lista=&first;
- scanf("%d", &corr);
- item->info=corr;
- prec=corr;
- while (5)
- {printf("%d\n", item->info);
- scanf("%d", &corr);
- if (corr>=prec)
- {item->next=malloc(sizeof(ElementoLista)); item=item->next; item->info=corr; item->next= NULL; prec=corr;}
- else if (corr<prec) break;
- }
- };
- void cancellaDuplicates(ListaDiElementi *lista)
- {ListaDiElementi corr;
- ListaDiElementi succ;
- corr=*lista;
- succ=corr->next;
- while (succ->next != NULL)
- {if (succ->info == corr->info)
- {succ=succ->next; free(corr->next); corr->next=succ;}
- else {corr=corr->next; succ=corr->next;}
- }
- };
- void filterLists(ListaDiElementi *lista1, ListaDiElementi lista2)
- {ListaDiElementi corr1, corr2, succ1, succ2;
- corr1=*lista1;
- corr2=lista2;
- while (corr1->next != NULL)
- { {if (corr2->info == corr1->info)
- {corr1=corr1->next; free(corr1);}
- else if (corr2->next != NULL)
- corr2=corr2->next;
- }
- if (corr2->next == NULL)
- corr1=corr1->next;
- if (*lista1==NULL)
- lista1=&corr1;
- };
- };
- //Function to print all the elements of the list:
- void printList(ListaDiElementi list) {
- printf("(");
- while (list != NULL) {
- printf("%d ", list->info);
- list = list->next;
- }
- printf(")\n");
- }
- int main() {
- ListaDiElementi first_list = NULL, second_list=NULL;
- //Read and print the first list:
- readList(&first_list); // add call to procedure/function readList()
- printf("Prima lista\n");
- printList(first_list);
- //Eliminates Duplicates from the first list:
- cancellaDuplicates(&first_list);
- printf("Prima lista senza duplicati\n");
- printList(first_list);
- //Read and print the second list:
- readList(&second_list);
- printf("Seconda lista\n");
- printList(second_list);
- //Eliminates Duplicates from the second list:
- cancellaDuplicates(&second_list);
- printf("Seconda lista senza duplicati\n");
- printList(second_list);
- //Filter the first list using the elements of the second list:
- filterLists(&first_list, second_list);
- //Print the filtered list:
- printf("Lista filtrata\n");
- printList(first_list);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement