Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [C] Liste con 4 puntatori...Aiuto è importante!

    Salve, ho da risolvere il seguente problema.
    Devo creare una lista multi-concatenata, ovvero una matrice fatta con le liste in C. Ogni elemento della lista dovrà avere, oltre ai normali campi, 4 puntatori che collegano l'elemento della lista a quello a destra, sinistra, in alto e in basso. Non so proprio dove mettere mani!
    Gli elementi verranno inseriti "in coda" ovvero da sinistra verso destra, dall'alto verso il basso come se si stesse riempindo una matrice del tipo:

    1 2 3 4 5
    6 7 8 9 10
    11 12 13 14 15

    per esempio l'elemento ke contiene l'8 dovrà avere 4 puntatori ke puntano al 7, al 3 al 9 e al 13 (sinistra, alto, destra, basso).

    Spero di essermi spiegato e conto sul vostro imminente aiuto!!!
    Se non è kiaro qualcosa kiedete pure!!!

    GRAZIE 1000!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma cosa non sai fare?

    Comincia a scrivere la struttura dati con i 4 puntatori ...

    P.S. Attenzione al titolo e al Regolamento ... tutto e' importante e nulla e' importante in un forum ...

  3. #3
    Che ti serve una lista di questo tipo?
    printf("Programmazione in C!");
    cout<<"Programmazione in C++!";

  4. #4

    RE

    Oops scusate per il titolo!

    Cmq la struttura l'ho dichiarata...il problema sta nel caricare i dati sulla lista... mi servirebbe la procedeura ke aggiunga un elemento in coda.
    Fingiamo ad esempio che devo caricare una matrice m*n in una lista strutturata come ho scritto sopra. Quando carico l'elemento di posizione h*k vuol dire ke le prime (h-1) righe sono state già riempite e i primi (k-1) elementi della h-esima riga sono stati ank'essi inseriti.

    Questa struttura mi serve per costruire una griglia di lettere per la risoluzione del gioco di enigmistica noto come crucipuzzle...Io lo farei con una normale matrice ma mi è stato imposto di farlo con le liste a 4 puntatori...

    Una domanda nella domanda: si puo' modificare il titolo?

    Grazie dell'attenzione

  5. #5
    Una lista lineare è una cavolata, ma con 4 puntatori! VVoVe:

    Si potrebbe creare un elemento che contiene tanti puntatori a tante liste quante devono essere le righe. Poi eseguire con un ciclo tutti i collegamenti verticali. (soluzione da schifo)

    Altrimenti andare come un "serpente":
    o-o-o-o
    |
    o-o-o-o
    |
    o-o-o-o

    E mano a mano fare i collegamenti in verticale. (una buona soluzione)

    So ce mi sono spiegato male.
    printf("Programmazione in C!");
    cout<<"Programmazione in C++!";

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Devi realizzare qualche funzione:

    1) una funzione che, dato il numero di righe e colonne, allochi la memoria per tutti gli elementi della lista e li colleghi tra loro, e ti restituisca il puntatore al primo elemento (0,0) in alto a sinistra, ad esempio

    struct Lista *CreateList(int r, int c);

    2) una funzione che, dati i due argomenti riga e colonna, ti restituisca il puntatore al nodo della lista, ad esempio

    struct Lista *GetList(int r, int c);

    3) una funzione, complementare alla 1), che deallochi la struttura, passandole il puntatore all'elemento (0,0), ad esempio

    void DestroyList(struct Lista *p);

  7. #7
    Però per crearla usa il serpentello
    printf("Programmazione in C!");
    cout<<"Programmazione in C++!";

  8. #8

    Ci siamo quasi...

    Ecco mi sarebbe utile la prima funzione scritta da Oregon... ma come si fa?...qualcuno potrebbe scrivere il codice in C (o uno pseudocodice) di tale funzione?

    La struttura è la seguente:

    struct StrutturaGriglia{//Struttura ricorsiva per la creazione e gestione della griglia
    char lettera;//Campo
    int stato;//Campo
    struct StrutturaGriglia *avanti;//Puntatore alla casella a destra
    struct StrutturaGriglia *dietro;//Puntatore alla casella a sinistra
    struct StrutturaGriglia *sopra;//Puntatore alla casella in alto
    struct StrutturaGriglia *sotto;//Puntatore alla casella in basso
    };

    Aiutatemi!

  9. #9
    Crei il primo elemento, crei un elemento a cui il primo punta, punti il primo elemento (di cui crei prima un puntatore), crei quindi il terzo e il puntatore usato prima punta al secondo elemento e così via.
    Finita la riga crei un nuovo elemento per la riga sotto e procedi per i collegamenti verticali come per gli orizzontali. Cosi è chiaro?
    printf("Programmazione in C!");
    cout<<"Programmazione in C++!";

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    5

    Programma in C

    Ciao Matematico, anch' io sono una matematica e sto preparando lo stesso lavoro per l'università...
    Che per caso ti andrebbe di elaborare il progetto insieme?
    ET

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.