|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
[C#]Pila
Qualcuno mi puo postare il codice di una pila commentato.............cosi capisco come funzia??????????
Tnk & Ciao |
![]() |
![]() |
![]() |
#2 |
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Sep 2000
Messaggi: 886
|
Avevo un scritto un esempio di pila agli inizi...se lo ritrovo te lo posto ...
__________________
1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. ![]() |
![]() |
![]() |
![]() |
#4 | |
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
Quote:
|
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Sep 2000
Messaggi: 886
|
Un primo esempio è questo, anche se non mi pare sia quello che avevo fatto io..boh?!?...provalo che non mi ricordo assolutamente se funziona e intanto studialo, poi, se proprio non ci riesci, vedo di commentartelo...cmq, se sai come funziona uno stack è più facile se provi ad implementarlo da solo....ritengo un pessimo metodo partire dal codice altrui per vedere come fungono algoritmi di base come questo...opinione del tutto personale....
Codice:
using System; public class Stack { private Node first = null; public bool Empty { get { return (first == null); } } public object Pop() { if (first == null) throw new Exception("Stack vuoto"); else { object temp = first.Value; first = first.Next; return temp; } } public void Push(object o){ first = new Node(o, first); } class Node { public Node Next; public object Value; public Node(object value): this(value, null) {} public Node(object value, Node next) { Next = next; Value = value; } } } class test { static void Main() { Stack s = new Stack(); for (int i = 0; i < 10; i++) s.Push(i); while (!s.Empty) Console.WriteLine(s.Pop()); } }
__________________
1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. ![]() |
![]() |
![]() |
![]() |
#6 |
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
nn ho capito nulla
![]() |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Partendo dal presupposto che io il C# non lo conosco...provo a commentartelo...
Codice:
using System; //La classe Stack ha 3 metodi : //Empty: testa se lo stack è vuoto //Push: immette nella pila un oggetto //Pop: estrae dalla pila lìultimo oggetto inserito public class Stack { private Node first = null; //inizializzo il puntatore al primo nodo public bool Empty { get { return (first == null); //se first è uguale a null ritorna vero (implica che lo stack è vuoto) } } public object Pop() { if (first == null) //se la pila è vuota alora non posso estrarre throw new Exception("Stack vuoto"); //allora lancio una eccezione else { object temp = first.Value; //Faccio un oggetto temporaneo a cui //assegno il valore dell'oggetto puntato da first (oggetto da estrarre) first = first.Next; //assegno a first il prossimo Node da estrarre return temp; //ritorno l'oggetto salvato precedentemente } } public void Push(object o){ first = new Node(o, first); //creo un nuovo Node di valore o e //che punta all'ultimo Node inseirito in pila (in pratica inserisco in testa alla pila) } //Questa classe contiene gli elementi della pila: //Next: è l'elemento puntato dal nodo corrente //Value: è il valore dell'oggetto nel nodo corrente class Node { public Node Next; public object Value; //Nel caso venga richiamato il costruttore sotto (Node n = new Node(o);) viene //richiamato automaticamente il costruttore successivo passando il valore null //come secondo parametro //In pratica chimando Node n = new Node(o); è vome se si chiamasse Node n = new Node(o, null); public Node(object value): this(value, null) {} //Con questo costruttore si assegnano i vari campi public Node(object value, Node next) { Next = next; Value = value; } } } class test { static void Main() { Stack s = new Stack(); //creo uno stack for (int i = 0; i < 10; i++) s.Push(i); //inserisco i nello stack while (!s.Empty) //fino a quando lo stack non è vuoto Console.WriteLine(s.Pop()); //rendo in output il valore estratto dallo stack } } 9 (è l'ultimo valore inserito) 8 7 6 5 4 3 2 1 0 |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Sep 2000
Messaggi: 886
|
Perfetto. Non c'è nulla da aggiungere. Thx, Cionci, mi hai risparmiato il lavoro di scrivere i commenti
![]()
__________________
1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. ![]() |
![]() |
![]() |
![]() |
#9 |
Bannato
Iscritto dal: Nov 2002
Città: PV
Messaggi: 1210
|
ora me lo studio, tnk!
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:20.