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

    [C] esercizio su pile, code.. etc etc

    Mi dareste un'occhiata a questo esercizio?
    codice:
    struct node
     {
     int info;
      struct node *next;
     }
    
     struct node * insert_new_element(struct node *p, int i)
     {
       struct node *q;
       q = (struct node *) malloc(sizeof(struct node));
       q -> next = p;
       q -> info = i;
    
       return(q)
     }
    
    struct node *delete_one_element(struct node *p, int *i)
     {
      struct node *q;
      *i = p-> info;
      q = p -> next;
    
     free(p);
     return(q);
     }
    sono funzioni che emulano push e pop su una pila nello stack... o inqueue e dequeue su una coda... o nessuna delle due cose?

    io non conosco C.. è per il mio coinquilino... ma dalle reminescenze di liste code e alberi in pascal fatti anni fa... e dal poco di sintassi C che intuisco... non capisco molto.. sicuramente aggiunge e sotrae elementi.. ma non capisco a che tipo di struttura... parla di "node".. il che mi farebbe pensare ad un albero...ma forse è stato fatto appositamente per trarre in inganno lo studente rofsinfami:

    tnx

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    28
    è semplicenemente un albero di liste
    Il segreto della programmazione sta nella pazzia che cè in noi basta solo avere tempo per cercarla

  3. #3
    Originariamente inviato da Extreme
    è semplicenemente un albero di liste
    albero DI liste?

  4. #4
    E' semplicemente uno stack dinamico.

  5. #5
    mi argomentereste un attimo meglio? è un esercizio di preparazione agli esami.. del mio coiqnuilino.. c'erano 3 alternative...

    a) push e pop di lista su stack

    b) inqueue e dequeue di una coda

    c) nessuna delle due cose



    se spiegate qaualcosina è meglio.. grazie


  6. #6
    L'esercizio è un ADT (Abstruct Data Type) che simula una pila (stack) utilizzando la struttura dinamica chiamata lista.

    codice:
    struct node {
     int info;
     struct node * next;
    }
    Questa parte dichiara un RECORD contenente due tipi di campi o fields: un intero, che poi sarebbe l'elemento della pila, e il puntatore alla struttura.

    codice:
    struct node * insert_new_element (struct node * p, int i) {
       struct node * q;
       q = (struct node *) malloc (sizeof (struct node));
       q -> next = p;
       q -> info = i;
       return (q);
    }
    Questo è il push, che non fà altro che restituire il nuovo indirizzo del top dello stack.

    codice:
    struct node * delete_one_element(struct node * p, int * i) {
      struct node * q;
      * i = p-> info;
      q = p -> next;
      free (p);
      return (q);
    }
    Questo è il pop che restiruisce l'indirizzo della nuova cima dello stack, e assegna al elemento passato per riferimento (int * i), il valore che si trovava nella cima dello stack.

    -> equivale al ^. del Turbo Pasquale.

    In questo programma conviene comunque mettere dei controlli del tipo "se lo stack è vuoto", "se lo stack è pieno" prima di procedere con le operazioni di pop o di push.

  7. #7
    il mio coinquilino ringrazia


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.