Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente bannato
    Registrato dal
    Dec 2007
    Messaggi
    14

    [C] esercizio sulle liste

    il testo dell'esercizio è:
    Si consideri il seguente tipo:

    typedef struct lista {
    int val;
    struct lista *next;
    } testa, *testa;

    Scrivere una funzione testa insarray(testa p, int k, int v[], int n) che modifica la lista di interi L inserendo, immediatamente prima del k-esimo elemento di L, n nuovi elementi con valori dati dall'array A e ritorna la lista modificata. La numerazione degli elementi della lista inizia da zero, se la lista non ha il k-esimo elemento, i nuovi elementi sono aggiunti in coda. Ad esempio, se L è 10 -> 11-> 12 -> 13 e A = {1, 2} (quindi n = 2), ecco come è modificata la lista per diversi valori di k:

    k = 0 1 -> 2 -> 10 -> 11-> 12 -> 13
    k = 2 10 -> 11-> 1 -> 2 -> 12 -> 13
    k = 6 10 -> 11-> 12 -> 13 -> 1 -> 2

    io l'ho eseguito in questo modo:

    codice:
    testa insarray(testa p, int k, int v[], int n){
        int i=0,m=0;
        
        if(k==0){
            testa nuovalista;
            for(int j=0;j<n;j++){
                testa nuovo=(lista*) malloc(sizeof(lista));
                nuovo->val=v[i];
                nuovo->next=p;
                nuovalista=nuovo;
            }
            
            return nuovalista;
        } 
        else{
            testa t=p;
            while(t!=NULL){
                t=t->next; m++; 
            }
            
            if(k<m){
                
                while(i<k){ 
                    p=p->next; 
                    i++; 
                }
                
                testa temp=p->next;
                testa tail;
                
                for(int j=0;j<n;j++){
                    testa nuovo=(lista*) malloc(sizeof(lista));
                    nuovo->val=v[i];
                    nuovo->next=NULL;
                    tail=p;
                    
                    while(tail->next!=NULL) 
                        tail=tail->next;
                    tail->next=nuovo;
                }
                p->next=temp;
            } 
            else
                if(k>m){
                    for(int j=0;j<n;j++){
                        testa nuovo=(lista*) malloc(sizeof(lista));
                        nuovo->val=v[i];
                        nuovo->next=NULL;
                        
                        testa e=p;
                        while (e->next != NULL)
                            e = e->next;
                        e->next=nuovo;
                    }
                }
        }
            
          return p;  
    }
    purtroppo non ho con me il mio computer quindi non ho potuto compilare e verificare se il mio codice è giusto, quindi in caso avessi sbagliato qualcosa e/o il codice non fosse corretto, sapreste dirmi dove ho sbagliato?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Mi sembra illogico che tu non l'abbia provato perché non hai il computer e chiedi a noi di farlo ...

    Un conto è mostrare del codice, indicare un problema preciso e chiedere una mano, un conto è fare quello che chiedi tu ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Moderazione

    Originariamente inviato da oregon
    Mi sembra illogico che tu non l'abbia provato perché non hai il computer e chiedi a noi di farlo ...
    Oltre ad essere illogico, è in netto contrasto con il Regolamento interno, nonchè con le finalità del forum.

    Il forum si occupa di aiutare a risolvere dei problemi... non a risolvere dei possibili o presunti problemi che ancora non si sa bene se esistano o meno.

    Chiudo la discussione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.