Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct el{
- int info;
- struct el *next;
- };
- typedef struct el ElementoDiLista;
- void add_h (ElementoDiLista **list, int x);
- void add_t (ElementoDiLista **list, int x);
- void delete_h (ElementoDiLista **list);
- ElementoDiLista* CancellaPari (ElementoDiLista **list);
- ElementoDiLista* sortList (ElementoDiLista *list);
- void printList (ElementoDiLista *list){
- printf("(");
- while(list!= NULL){
- printf("%d ", list->info);
- list = list->next;
- }
- printf(")");
- }
- //Devo cancellare dalla lista gli elementi pari.
- int main (void) {
- ElementoDiLista *lista = NULL;
- int val;
- //Se il valore è piu grande di 10 lo metto in testa , se è piu piccolo lo metto in coda.
- // Se il valore è minore di zero termino l'acquisizione.
- scanf("%d", &val);
- while(val>=0){
- if(val>=10){
- add_h (&lista, val);
- scanf("%d", &val);
- }
- else{
- add_t(&lista, val);
- scanf("%d", &val);
- }
- }
- printf("\n");
- printList(lista);
- lista = CancellaPari(&lista);
- printf("\n");
- printList(lista);
- return 0;
- }
- void add_h (ElementoDiLista **list, int x){
- ElementoDiLista *new = malloc(sizeof(ElementoDiLista));
- new->info = x;
- new->next = *list;
- *list = new;
- }
- void add_t (ElementoDiLista **list, int x){
- ElementoDiLista *new = malloc(sizeof(ElementoDiLista));
- ElementoDiLista *scorr = *list;
- new->info = x;
- new->next = NULL;
- if(*list == NULL){
- *list = new;
- }
- else{
- while(scorr->next != NULL){
- scorr = scorr->next;
- }
- scorr->next = new;
- }
- }
- void delete_h (ElementoDiLista **list){
- ElementoDiLista *temp = NULL;
- if(*list != NULL){
- if((*list)->next != NULL){
- temp = *list;
- *list = (*list)->next;
- free(temp);
- }
- else{
- temp = *list;
- *list = NULL;
- free(temp);
- }
- }
- }
- ElementoDiLista* CancellaPari (ElementoDiLista **list){
- ElementoDiLista *prec = NULL;
- ElementoDiLista *scorr = *list;
- ElementoDiLista *temp = NULL;
- while (scorr != NULL){
- if(scorr->info % 2 != 0){
- prec = scorr;
- scorr = scorr->next;
- }
- else{
- if(prec == NULL){
- delete_h(&(*list));
- scorr = scorr->next;
- }
- else{
- temp = scorr;
- prec->next = scorr->next;
- scorr = scorr->next;
- free(temp);
- }
- }
- }
- return *list;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement