|
|||||||
|
|
|
![]() |
|
|
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: 05:10.



















