Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 44
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    76

    [C] liste concatenate che come dati hanno ancora liste

    Ciao a tutti, volevo sapere se era possibile una cosa di questo genere:
    volevo creare una lista concatenata doppia che come dato per ogni cella abbia un puntatore ad un'altra lista di 6 elementi ma non tutti dello stesso tipo.
    Con questo metodo poi riesco a inserire un dato in una particolare posizione di una sotto lista? O forse sarebbe meglio utilizzare una struttura? HELP!
    Lo so sono complicata! grazie mille! Buona giornata!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    76
    UP!!

  3. #3

    Re: [C] liste concatenate che come dati hanno ancora liste

    Originariamente inviato da lallac
    ...
    Con questo metodo poi riesco a inserire un dato in una particolare posizione di una sotto lista?
    certamente
    O forse sarebbe meglio utilizzare una struttura?
    una lista è già una struttura.


    dovresti almeno buttare giù la definizione delle due strutture, così vediamo i tipi che vuoi trattare.
    ciao
    sergio

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    76
    allora la prima lista mi serve solo come contenitore deve avere il puntatore all'elemento precedente e a quello successivo e il dato interno mi piacerebbe fosse un numero progressivo che identifica la lista collegata.
    Nella lista collegata io ho 5 campi di cui 4 sono interi e rappresentano delle coordinate e uno è una stringa.
    Per questo dicevo se nn era meglio usare una struct invece che una lista...

  5. #5
    qualcosa del genere ?
    codice:
    #include <stdio.h>
    
    typedef struct _Container {
    
    	unsigned short counter;
    
    	struct _Coordinata *data ;
    
    	struct _Container *next;
    	struct _Container *prev;
    
    } Container ;
    
    typedef struct _Coordinata {
    
    	unsigned short x1;
    	unsigned short x2;
    	unsigned short x3;
    	unsigned short x4;
    
    	char * str ;
    
    	struct _Coordinata *next;
    
    
    } Coordinata ;
    
    
    int main ()
    {
    
    	return ( 0 );
    }
    ciao
    sergio

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    76
    si potrebbe andare ho solo una domanda....la lista "coordinate" non è una lista doppia...giusto? se io dovessi modificare un parametro in coda una volta inserita potrei farlo lo stesso?

  7. #7
    se implementarlo come lista doppia dipende da te.
    Tieni presente che la lista doppia occupa più memoria ma puoi, chiaramente, visitare a ritroso la lista.
    Per quanto riguarda inserimenti, cancellazioni e modifiche sono possibili su tutte e due le implementazioni con algoritmi ben collaudati.
    ciao
    sergio

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    76
    Ok nel caso una volta che ho scritto il codice posso fartelo vedere così mi dici se secondo te c'è qualcosa che nn va?ti ringrazio tanto!buona giornata

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    76
    senti io ho trovato questo codice secondo te posso adattarlo alle mie liste??

    codice:
    function insertAfter(List list, Node node, Node newNode)
         newNode.prev := node
         newNode.next := node.next
         if node.next = null
             list.lastNode := newNode
         else
             node.next.prev := newNode
         node.next := newNode
    questo per la lista contenitore, ovviamente devo riadattarla alla mia lista, questa è definita così:
    codice:
    record Node {
        data // I dati da immagazzinare nel nodod
        next // Un puntatore al nodo successivo; null per l'ultimo nodo
        prev // Un puntatore al node precedente; null per il primo nodo
     }
     
     record List {
         Node firstNode   // punta al primo nodo della lista; null per liste vuote
         Node lastNode    // punta all'ultimo nodo della lista; null per liste vuote
     }
    per la lista delle coordinate ho trovato queste operazioni:
    codice:
     function insertAfter(Node node, Node newNode) { // inserisce newNode dopo node
         newNode.next := node.next
         node.next    := newNode
     }
    definita così
    codice:
    record Node {
        data // I dati da memorizzare nel nodo
        next // Un riferimento al nodo successivo; null per l'ultimo nodo
     }
     
     record List {
         Node firstNode   // punta al primo nodo della lista; null per una lista vuota
     }
    posso usarle con le definizioni che mi hai dato te? come le devo modificare? grazie mille!!!

  10. #10
    le operazioni che devi fare sono

    -aggiungere un nuovo contenitore
    -cancellare un contenitore
    -aggiungere nuovi dati ad un contenitore
    -modificare i dati in un contenitore
    -cancellare i dati da un contenitore

    per ciascuno di questi punti devi scrivere una funzione che faccia quello che è descritto.
    Mi dovresti però spiegare meglio cosa vuoi fare.
    ciao
    sergio

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.