AleksandarArkan

L-conta elementi, stampa ennesimo

Apr 17th, 2015
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.15 KB | None | 0 0
  1. /*Scrivere una funzione che determini la lunghezza
  2.  * di una lista presa in input
  3.  * scrivere una funzione che stampi l'ennesimo elemento nella lista,
  4.  * se non ce deve visualizzare  un messaggio appropriato */
  5.  
  6.  #include <stdio.h>
  7.  #include <stdlib.h>
  8.  
  9.  
  10.  //funzione crea lista, che termina con l'inserimento dello zero
  11.  struct elemento {
  12.      int num;
  13.      struct elemento *next;
  14.      };
  15.      
  16. //funzione uno crea lista con una seq di interi in input
  17.  
  18. struct elemento *creaListaSeq(){
  19.     int numero;
  20.     struct elemento *primo=NULL;
  21.     struct elemento *puntatore;
  22.    
  23.     printf("Inserisci il primo numero:\n");
  24.     scanf("%d",&numero);
  25.    
  26.     //se ha inserito zero termina subito
  27.     if(numero==0)
  28.         return primo;
  29.    
  30.     if(numero!=0){
  31.         primo=malloc(sizeof(struct elemento));
  32.         primo->num=numero;
  33.         }
  34.     puntatore=primo;
  35.     //ora faccio gli altri elementi
  36.     //lettura del prosssimo numero
  37.     printf("Inserisci il numero:\n");
  38.     scanf("%d",&numero);
  39.    
  40.     while(numero!=0){
  41.         puntatore->next=malloc(sizeof(struct elemento));
  42.         puntatore=puntatore->next;
  43.         puntatore->num=numero;
  44.         printf("Inserisci il numero:\n");
  45.         scanf("%d",&numero);
  46.         }
  47.     puntatore->next=NULL;
  48.    
  49.     return primo;
  50.     }
  51.  
  52. //determina lunghezza lista
  53. //FUNZIONA
  54. int lunghezzaLista(struct elemento *lista){
  55.     int risultato;
  56.     risultato=0;
  57.    
  58.     struct elemento *puntatore;
  59.     puntatore=lista;
  60.    
  61.     while(puntatore!=NULL){
  62.         risultato++;
  63.         puntatore=puntatore->next;
  64.         }
  65.    
  66.     return risultato;
  67.     }
  68.  
  69. //FUNZIONE STAMPA ENNESIMO ELEMENTO DELLA LISTA
  70. //funziona
  71. void stampaEnnesimo(struct elemento *lista, int num){
  72.     struct elemento *puntatore;
  73.     puntatore=lista;
  74.     int cont;
  75.     cont=1;
  76.    
  77.    
  78.     while(puntatore!=NULL){
  79.         if(cont==num){
  80.             printf(" Numero in posizione %d: %d", cont,puntatore->num);
  81.             return;
  82.             }
  83.         cont++;
  84.         puntatore=puntatore->next;
  85.         }
  86.     printf("La lista non ha %d elementi", num);
  87.    
  88.     }
  89.  
  90. int main(){
  91.     struct elemento *lista;
  92.     lista=creaListaSeq();
  93.     int risultato;
  94.     int stampa;
  95.     risultato=lunghezzaLista(lista);
  96.     printf("Numero elementi: %d\n", risultato);
  97.     printf("Elemento in quale posizione vuoi visualizzare? \n");
  98.     scanf("%d", &stampa);
  99.     stampaEnnesimo(lista,stampa);
  100.    
  101.     return 0;
  102.     }
Advertisement
Add Comment
Please, Sign In to add comment