AleksandarArkan

L- Esercizi Slide M

Apr 16th, 2015
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.85 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  struct elemento {
  5.      int num;
  6.      struct elemento *next;
  7.      };
  8.      
  9. //funzione uno crea lista con una seq di interi in input
  10.  
  11. struct elemento *creaListaSeq(){
  12.     int numero;
  13.     struct elemento *primo=NULL;
  14.     struct elemento *puntatore;
  15.    
  16.     printf("Inserisci il primo numero:\n");
  17.     scanf("%d",&numero);
  18.    
  19.     //se ha inserito zero termina subito
  20.     if(numero==0)
  21.         return primo;
  22.    
  23.     if(numero!=0){
  24.         primo=malloc(sizeof(struct elemento));
  25.         primo->num=numero;
  26.         }
  27.     puntatore=primo;
  28.     //ora faccio gli altri elementi
  29.     //lettura del prosssimo numero
  30.     printf("Inserisci il numero:\n");
  31.     scanf("%d",&numero);
  32.    
  33.     while(numero!=0){
  34.         puntatore->next=malloc(sizeof(struct elemento));
  35.         puntatore=puntatore->next;
  36.         puntatore->num=numero;
  37.         printf("Inserisci il numero:\n");
  38.         scanf("%d",&numero);
  39.         }
  40.     puntatore->next=NULL;
  41.    
  42.     return primo;
  43.     }
  44.  
  45.  //FUNZIONAAAAAAAA----->
  46.  //verifica se una lista contiene solo elementi pari
  47.  
  48.  int soloPari(struct elemento *lista){
  49.      struct elemento *puntatore;
  50.      int flag=1;
  51.      
  52.      if(lista==NULL)
  53.         return 0;
  54.        
  55.     puntatore=lista;
  56.    
  57.     while(puntatore!=NULL && flag==1){
  58.         if(puntatore->num%2==1)
  59.             flag=0;
  60.        
  61.        
  62.         puntatore=puntatore->next;
  63.      }
  64.      if(flag==0)
  65.         return 0;//non contiene solo pari
  66.     else
  67.         return 1;//contiene solo pari
  68.      }
  69.  
  70. //funzione verifica se due liste sono uguali
  71. //FUNZIONAAAAAAA
  72. int sonouguali(struct elemento *lista1,struct elemento *lista2){
  73.     int flag=1;
  74.     if(lista1!=NULL && lista2!=NULL){
  75.         while(lista1!=NULL && lista2!=NULL && flag==1){
  76.             if(lista1->num!=lista2->num)
  77.                 flag=0;
  78.             else{
  79.                 lista1=lista1->next;
  80.                 lista2=lista2->next;
  81.                 }
  82.             }
  83.        
  84.     }
  85.     if(flag==1)
  86.         return 1;
  87.     else
  88.         return 0;
  89. }
  90.  
  91. //funzione concatena due liste, concatena la seconda alla prima
  92. //FUNZIONAAAAAAAAAAAAAAAA
  93. void concatena(struct elemento *lista1, struct elemento *lista2){
  94.     struct elemento *puntatore;
  95.     puntatore=lista1;
  96.     while(puntatore->next!=NULL){
  97.         puntatore=puntatore->next;
  98.         }
  99.     puntatore->next=lista2;
  100.     while(puntatore->next!=NULL){
  101.         puntatore=puntatore->next;
  102.         }
  103.     puntatore->next=NULL;
  104.     }
  105.  
  106.  
  107. //funzione ritorna posizione della prima occorrenza di quel elemento, -1 se non ce
  108. int ritornaPos(struct elemento *lista, int numero){
  109.     if(lista==NULL)
  110.         return -1;
  111.     //la lista non e' vuota
  112.     int pos=0;
  113.     struct elemento *puntatore;
  114.     puntatore=lista;
  115.     int trovato=0;
  116.    
  117.     while(puntatore->next!=NULL && trovato==0){
  118.         if(puntatore->num==numero){
  119.              trovato=1;
  120.              break;         }
  121.        
  122.         pos++;
  123.         puntatore=puntatore->next;
  124.     }  
  125.     //mi resta da controllare anche l'ultimo
  126.     if(puntatore->num==numero){
  127.         trovato=1;
  128.         }
  129.    
  130.    
  131.     if(trovato==1)
  132.         return pos;
  133.     else
  134.         return -1;
  135.    
  136.     }
  137.  
  138.  
  139.  
  140. int main(){
  141.    
  142.     struct elemento *lista1;
  143.     lista1=creaListaSeq();
  144.    
  145.    
  146.     int ris;
  147.     ris=soloPari(lista1);
  148.     printf("%d ", ris);
  149.    
  150.     return 0;
  151.     }
Advertisement
Add Comment
Please, Sign In to add comment