Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C] Pila

  1. #1

    [C] Pila

    ciao

    che cosa è e come si implementa una pila in c?

    grazie

  2. #2
    La pila è una particolare lista in cui l'inserimento e la cancellazione è consentita solo ad una estremità. Questa gestione è anche chiamata LIFO (Last In First Out), in quanto l'ultimo elemento inserito è il primo ad essere estratto. L'estremità della lista in cui è consentito l'inserimento e l'estrazione è chiamata top o cima.
    Sia data una pila composta dagli elementi a1, a2, a3, …., an e si supponga che la cima sia rappresentata dalla posizione del primo elemento a1. L'inserimento di un elemento x produce la nuova pila x, a1, a2, a3, …., an. La nuova cima della PILA diviene la posizione di x. La cancellazione della cima ripristina la pila iniziale a1, a2, a3, …., an.
    codice:
     
    #define N 10
    #define PILAVUOTA -1
    
    typedef int tipobase;
    typedef char boolean;
    
    struct stack {
    	 tipobase info[N];
    	 int top;
    } ;
    
    void MakeNull(stack *s)
    {
      s->top=PILAVUOTA;
    }
    
    
    boolean Empty(stack *s)
    {
       return(s->top==PILAVUOTA);
    }
    
    boolean Full(stack *s)
    {
       return(s->top==N-1);
    }
    
    void Push(stack *s, tipobase x)
    {
     if (!Full(s)) {
    	s->top++;
    	s->info[s->top]=x;
     }
    }
    
    void Pop(stack *s)
    {
     if (!Empty(s))
    		s->top--;
    }
    
    tipobase Top(stack *s)
    {
      if (!Empty(s))
    	return(s->info[s->top]);
    }

    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  3. #3
    Grazie 1000 Luc@s, vedo che hai usato solo elementi base del linguaggio, quindi suppongo che il c non abbia dei tipi o delle funzionalità specifiche per gestire le pile...

    un'ultima cosa, ma se provassi ad utilizzare lo stack con l'asm inline, sarebbe + effic.???

    PS spero di non avere detto qualche cavolata

    ciao

  4. #4
    Originariamente inviato da matteolandi
    Grazie 1000 Luc@s, vedo che hai usato solo elementi base del linguaggio, quindi suppongo che il c non abbia dei tipi o delle funzionalità specifiche per gestire le pile...
    Esatto, il C ha un nucleo di base molto compatto, per tipi di dati astratti quali pile/code/liste occorre usare librerie apposite o programmaseli...

    un'ultima cosa, ma se provassi ad utilizzare lo stack con l'asm inline, sarebbe + effic.???
    A priori si puo` solo dire che
    "l'ottimizzazione prematura e` la radice di ogni male" -- Donald Knuth
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  5. #5
    Originariamente inviato da matteolandi

    un'ultima cosa, ma se provassi ad utilizzare lo stack con l'asm inline, sarebbe + effic.???
    Prima fallo funzionare e poi perfezionalo............. questo è quello che dice Linus Torvalds...... :gren:
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  6. #6
    ottimi consigli!!

    ciao e grazie

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 © 2025 vBulletin Solutions, Inc. All rights reserved.