ciao
che cosa è e come si implementa una pila in c?
grazie
ciao
che cosa è e come si implementa una pila in c?
grazie
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
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
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...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...
A priori si puo` solo dire cheun'ultima cosa, ma se provassi ad utilizzare lo stack con l'asm inline, sarebbe + effic.???
"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".
Prima fallo funzionare e poi perfezionalo............. questo è quello che dice Linus Torvalds...... :gren:Originariamente inviato da matteolandi
un'ultima cosa, ma se provassi ad utilizzare lo stack con l'asm inline, sarebbe + effic.???
La stupidità umana e l'universo sono infinite.
Della seconda non sono certo(Einstein)
Gnu/Linux User
ottimi consigli!!
ciao e grazie