Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C] Aggiungere elementi in mezzo ad una lista già fatta..

    Ciao a tutti.. non riesco a capire comme posso aggiungere degli elementi tra un'elemento e l'altro della prima lista in modo da formarne un'altra come richiede l'esercizio seguente.. se qualcuno è in grado di darmi una mano gliene sarei molto grato, magari pure provando a spiegarmi il procedimento, grazie a tutti in anticipo..


    codice:
    /*Esercizio 3 : Scrivere un programma che genera casualmente un vettore di 
    interi e costruisce e stampa una lista che contiene gli elementi negativi del vettore. 
    Inserire nel programma una funzione che inserisce DOPO ciascun elemento della lista 
    un nuovo elemento che contiene il valore doppio e positivo dell'elemento considerato.
    Stampare la lista così ottenuta.
    Esempio:
    v[] = [3,-3,4,-4,-5,5] 
    
    lista [3¨ 4¨ 5¨ NULL] 
    
    lista_mod [3¨ 6 ¨ 4¨ 8 ¨ 5¨ 10 ¨ NULL]   */
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #define N 5
    
    struct lista{
           int num;
           struct lista *prossimo;};
    
    typedef struct lista L;
           
    L *crea_lista (L *,int);
    void stampa(L *);
    L *mod_lista (L *);
    
    main()
    {
          int i,v[N];
          L *inizio=NULL;
          srand(time(NULL));
          printf("\nVettore\n\n");
          for(i=0;i<N;i++)
          {
             v[i]=-10+rand()%20;
             printf("\nV[%d] = %2d",i,v[i]);
             if (v[i]<0)
             inizio=crea_lista(inizio,v[i]);
          }
          stampa(inizio);
          
          mod_lista (L *);
          
          stampa(inizio);
          
    
    
          
          fflush(stdin);
          getchar();
    }
    
    L *crea_lista(L *inizio, int numero)
    {   L *p;
        p=(L *)malloc(sizeof(L));
        p->num=numero;
        p->prossimo=inizio;
        return p;                
    }
    
    void stampa(L *inizio)
    {    
         printf ("\n\nLista [ ");
         while(inizio)
         {
            printf ("%d --> ",inizio->num);
            inizio=inizio->prossimo;
         }
         printf ("NULL ]");
    }
     
    L * mod_lista(L *inizio)
    {
         L *p;
         int n;
         
         while(inizio)
         {
              
         }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    23

    UNICA??

    Ciao...6 iscritto in informatica a Cagliari?
    Io l avevo risolto così una settimana fa.....
    Controllalo, spero possa servirti.....magari non è modo migliore ma funziona...
    codice:
    /*
      Scrivere un programma che legge un vettore di interi  e costruisce e stampa una
      lista che contiene gli elementi negativi del vettore. Inserire nel programma
      una funzione che inserisce DOPO ciascun elemento della lista un nuovo elemento
      che contiene il valore doppio e positivo dell'elemento considerato.
      Stampare la lista così ottenuta .
    */
    
    #include <stdio.h>
    #include <malloc.h>
    
    typedef struct neg {
    						  int info;
                        struct neg *next;
                        }*p;
    typedef struct neg Neg;
    
    Neg *crea_lista(Neg*,int);
    void stampa(Neg*);
    void ins(Neg*,int,int);
    int dato,dove;
    
    main(){                                           // MAIN
    int v[5],i;
    Neg *inizio=NULL;
    Neg *in;
    for(i=0;i<5;i++){printf("Scrivi 5 elementi negativi:\n\n");
                     scanf("%d",&v[i]);
    					  if(v[i]<0) inizio=crea_lista(inizio,v[i]);
                    }
    in=inizio;
    stampa(inizio);
    
          while (in){              //CHIAMATA FUNZ.INSERIMENTO
                         dove=in->info;
                         dato=-2*in->info;
                         ins(in,dove,dato);
                         in=in->next->next;
                         }
    
    stampa(inizio);
    
    fflush(stdin);
    getchar();
    }
    
    Neg *crea_lista(Neg *inizio,int dato)      //CREA LISTA
    {
     Neg *p;
    
     p=(Neg*)malloc(sizeof(Neg));
    
     p->info = dato;
     p->next= inizio;
    
     return(p);
    }
    
    void ins(Neg *in ,int dove,int dato)       //INSERISCI
    {
     Neg *q, *aux;
    
     q=(Neg*)malloc(sizeof(Neg));
    
     q->info=dato;
     q->next=NULL;
    
     aux=in;
     while ((aux->info !=  dove) && (aux))
                                    aux=aux->next;
     if(aux){
             q->next=aux->next;
     			aux->next=q;
             }
              else printf("Elemento assente");
    
    }
    
    
    void stampa(Neg *inizio){                      //STAMPA
    
    while (inizio){
                   printf("  %d  ",inizio->info);
                   inizio=inizio->next;
                   }
     printf("\n\n");
    }

  3. #3
    ok ho risolto... non avevo idea di come fare.. cmq si, sono iscritto in informatica a cagliari.. e ho l'esame il 7, immagino ci sarai pure tu...cmq grazie mille..

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    23
    Già....Speriamo bene, anche se la vedo grigia! buono studio!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.