Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C] Invertire una pila

  1. #1

    [C] Invertire una pila

    ciao a tutti,

    mi dareste un'imbeccata per riuscire a invertire una pila senza l'uso di pile o code di appoggio?

    grazie mille

  2. #2
    Sei sicuro/a che sia possibile ?
    I dati ce li hai solo nella pila e non puoi prelevarli se non con l'operazione di pop e reinserirli con push ?

    EDIT:
    Puoi postare la struttura della tua pila ?
    Experience is what you get when you don’t get what you want

  3. #3
    questo è il testo dell'esercizio:

    Scrivere una funzione che inverta l’ordine dei valori di una pila. La funzione deve modificare la pila in ingresso e non crearne una nuova.


    questa è l'implementazione della pila:

    Codice PHP:
    struct elem

       
    int d;
       
    struct elemnext;
    };

    typedef struct elem elem;

    typedef struct stack
    {
       
    int cnt;
       
    elemtop;
    }
    stack
    posso usare le funzioni tipiche delle pile (push,pop,top,...)

  4. #4
    Facendo uno scambio dovresti riuscirci
    codice:
    struct Nodo
    {
       /*...*/
       struct Nodo *next;
    } *testa;
    
    struct Nodo *Scambia () 
    {
       struct Nodo *temp = testa;
       struct Nodo *temp2 = NULL;
       while (temp)
          {
           struct Nodo *appoggio = temp2;
           temp2 = temp;
           temp = appoggio;
           temp = temp -> next;
           }
       return temp2;
    }
    La funzione Scambia dovrebbe ritornare la nuova testa ...
    L'ho buttata giù così, non so neanche se funziona, fai delle prove perché io non ne ho il tempo...
    Experience is what you get when you don’t get what you want

  5. #5
    Originariamente inviato da Xaratroom
    Facendo uno scambio dovresti riuscirci
    codice:
    struct Nodo
    {
       /*...*/
       struct Nodo *next;
    } *testa;
    
    struct Nodo *Scambia () 
    {
       struct Nodo *temp = testa;
       struct Nodo *temp2 = NULL;
       while (temp)
          {
           struct Nodo *appoggio = temp2;
           temp2 = temp;
           temp = appoggio;
           temp = temp -> next;
           }
       return temp2;
    }
    La funzione Scambia dovrebbe ritornare la nuova testa ...
    L'ho buttata giù così, non so neanche se funziona, fai delle prove perché io non ne ho il tempo...
    Aspetta lol ho dimenticato un po' di roba
    Experience is what you get when you don’t get what you want

  6. #6
    Ecco ..
    Prova così ..
    ... con le opportune modifiche
    codice:
    struct Nodo
    {
       /*...*/
       struct Nodo *next;
    } *testa;
    
    struct Nodo *Scambia () 
    {
       struct Nodo *temp = testa;
       struct Nodo *temp2 = NULL;
       while (temp)
          {
           struct Nodo *appoggio1 = temp;
           temp = temp->next;
    	   appoggio->next = temp2
    	   temp2 = appoggio;
           }
       return temp2;
    }
    Experience is what you get when you don’t get what you want

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.