Estrazione della testa e della coda da una lista C

di il
7 risposte

Estrazione della testa e della coda da una lista C

Sono qua alla disperata ricerca di aiuto. Prima di 5 mesi fa non avevo mai neanche toccato l'argomento programmazione e ora mi trovo a doverci dare un esame... Il fatto è che sto avendo qualche difficoltà con un esercizio in particolare sulle liste, che mi chiede di implementare due funzioni:

la prima, TestaLista , applicabile solo a liste non vuote (se la lista è vuota segnala l'errore opportunamente), produce come risultato il valore del campo info del primo elemento della lista;
TipoElemento   TestaLista (ListaDiElem Lista)
la seconda, CodaLista , produce come risultato un puntatore alla sottolista ottenuta da Lista cancellandone il primo elemento, ma non deve modificare il parametro originario. Anche questa assume l'ipotesi che il parametro passatole sia una lista non vuota.
ListaDiElem    CodaLista (ListaDiElem Lista)
Io non so davvero dove mettere le mani, se qualcuno sa come farlo e avesse voglia di darmi una mano, potrei solo esserne felice!

7 Risposte

  • Re: Estrazione della testa e della coda da una lista C

    In questo forum non si fanno e non si richiedono soluzioni per gli esercizi. Non studiamo al posto vostro.
  • Re: Estrazione della testa e della coda da una lista C

    Ma poi, almeno provaci un attimo con carta e penna. Ogni nodo è costituito dal valore e dal puntatore al prossimo elemento, quanto complicato può essere?
  • Re: Estrazione della testa e della coda da una lista C

    oregon ha scritto:


    In questo forum non si fanno e non si richiedono soluzioni per gli esercizi. Non studiamo al posto vostro.
    Mi spiace, non lo sapevo. Non è che non ci abbia provato da sola e non ci stia provando tutt'ora, ma a mala pena so come inziare, sarà colpa mia che sono ottusa.
    Comunque non importa, grazie lo stesso per avermi avvisata
  • Re: Estrazione della testa e della coda da una lista C

    Una lista è semplicemente una collezione di elementi ciascuno dei quali è allocato singolarmente, per cui occorre che ogni elemento della lista contenga un collegamento a quello successivo, dall'ultimo elemento allocato (testa) a quello immediatamente precedente fino al primo elemento che fu allocato che ora costituisce la coda.

    Non ti resta che scrivere il tuo elemento (nodo), una funzione semplice semplice che aggiunge un nodo per volta alla lista, una funzione che legge il primo elemento e una funzione che ne legge l'ultimo. Prova e posta il tentativo.
  • Re: Estrazione della testa e della coda da una lista C

    idiotafsandwich ha scritto:


    oregon ha scritto:


    In questo forum non si fanno e non si richiedono soluzioni per gli esercizi. Non studiamo al posto vostro.
    Mi spiace, non lo sapevo. Non è che non ci abbia provato da sola e non ci stia provando tutt'ora, ma a mala pena so come inziare, sarà colpa mia che sono ottusa.
    Comunque non importa, grazie lo stesso per avermi avvisata
    Sono sicuro che se studi e ci tenti, riesci.
  • Re: Estrazione della testa e della coda da una lista C

    In questi casi conviene partire dal basso, cioè bottom-up.
    Ti serve un "qualcosa" che sia un elemento di una lista.
    Tipicamente suppongo sarà una struct (nel tuo caso) e non un oggetto/classe.
    Diciamo una struct.
    Essa sarà composta da due elementi [questa è la versione per principianti]
    * un payload (cioè il valore che vuoi serbare nella lista, un numero intero, una stringa o quello che vuoi). direi che nel tuo testo è chiamato info
    * un puntatore al successivo elemento

    Dopo aver un ELEMENTO della lista, creerai una LISTA come concatenazione di elementi.
    Ci possono essere delle differenze di approccio "stile C" o "stile C++", non so quale viene richiesta.

    A quel punto, quando hai una lista-di-elementi, che inizialmente sarà vuota, utilizzerai funzioni (te ne consiglio qualcuna per lo sviluppo) del tipo
    "aggiungi-un-elemento-in-coda-alla-lista"
    "stampa-tutta-la-lista"

    a quel punto implementerai le due funzioni del testo

    ovviamente, con una certa esperienza, si può scrivere direttamente la risposta.
    nel tuo caso, invece, ti suggirisco di fare un piccolo programmello completo, in modo che possa vedere in concreto cosa accade e, soprattutto, fare il debug che - le prime volte - è 100 volte più lungo della programmazione stessa.

    ma è fisiologico, è normale.

    Quindi partirei così, fossi in te.

    hello world.

    fai un programma che scrive a video "hello world", compilalo, eseguilo.
    postalo, e si passa allo step #2
  • Re: Estrazione della testa e della coda da una lista C

    Grazie mille a tutti per i consigli, cercherò di creare un programma completo per vedere se tutto funziona come dovrebbe. Se dovessi avere qualche dubbio proverò a chiedervi aiuto di nuovo ^-^
Devi accedere o registrarti per scrivere nel forum
7 risposte