|
Par
nico.pyright
Mise à jour : 02/02/2012
22 955 visites depuis 7 jours,
dont 140 sur ce chapitre
classé 15/786
|


) et à vos claviers.
1 2 3 4 5 6 | public class Chainage<T> { public Chainage<T> Precedent { get; set; } public Chainage<T> Suivant { get; set; } public T Valeur { get; set; } } |
1 2 3 | public class ListeChainee<T> { } |
1 2 3 4 | public class ListeChainee<T> { public Chainage<T> Premier { get; private set; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public class ListeChainee<T> { […Code supprimé pour plus de clarté…] public Chainage<T> Dernier { get { if (Premier == null) return null; Chainage<T> dernier = Premier; while (dernier.Suivant != null) { dernier = dernier.Suivant; } return dernier; } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public class ListeChainee<T> { […Code supprimé pour plus de clarté…] public void Ajouter(T element) { if (Premier == null) { Premier = new Chainage<T> { Valeur = element }; } else { Chainage<T> dernier = Dernier; dernier.Suivant = new Chainage<T> { Valeur = element, Precedent = dernier }; } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public class ListeChainee<T> { […Code supprimé pour plus de clarté…] public Chainage<T> ObtenirElement(int indice) { Chainage<T> temp = Premier; for (int i = 1; i <= indice; i++) { if (temp == null) return null; temp = temp.Suivant; } return temp; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public class ListeChainee<T> { […Code supprimé pour plus de clarté…] public void Inserer(T element, int indice) { if (indice == 0) { Chainage<T> temp = Premier; Premier = new Chainage<T> { Suivant = temp, Valeur = element }; temp.Precedent = Premier; } else { Chainage<T> elementAIndice = ObtenirElement(indice); if (elementAIndice == null) Ajouter(element); else { Chainage<T> precedent = elementAIndice.Precedent; Chainage<T> temp = precedent.Suivant; precedent.Suivant = new Chainage<T> { Valeur = element, Precedent = precedent, Suivant = temp }; } } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | public class ListeChainee<T> { […Code supprimé pour plus de clarté…] public void Inserer(T element, int indice) { if (indice == 0) { if (Premier == null) Premier = new Chainage<T> { Valeur = element }; else { Chainage<T> temp = Premier; Premier = new Chainage<T> { Suivant = temp, Valeur = element }; temp.Precedent = Premier; } } else { Chainage<T> elementAIndice = ObtenirElement(indice); if (elementAIndice == null) Ajouter(element); else { Chainage<T> precedent = elementAIndice.Precedent; Chainage<T> temp = precedent.Suivant; precedent.Suivant = new Chainage<T> { Valeur = element, Precedent = precedent, Suivant = temp }; } } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | static void Main(string[] args) { ListeChainee<int> listeChainee = new ListeChainee<int>(); listeChainee.Ajouter(5); listeChainee.Ajouter(10); listeChainee.Ajouter(4); Console.WriteLine(listeChainee.Premier.Valeur); Console.WriteLine(listeChainee.Premier.Suivant.Valeur); Console.WriteLine(listeChainee.Premier.Suivant.Suivant.Valeur); Console.WriteLine("*************"); Console.WriteLine(listeChainee.ObtenirElement(0).Valeur); Console.WriteLine(listeChainee.ObtenirElement(1).Valeur); Console.WriteLine(listeChainee.ObtenirElement(2).Valeur); Console.WriteLine("*************"); listeChainee.Inserer(99, 0); listeChainee.Inserer(33, 2); listeChainee.Inserer(30, 2); Console.WriteLine(listeChainee.ObtenirElement(0).Valeur); Console.WriteLine(listeChainee.ObtenirElement(1).Valeur); Console.WriteLine(listeChainee.ObtenirElement(2).Valeur); Console.WriteLine(listeChainee.ObtenirElement(3).Valeur); Console.WriteLine(listeChainee.ObtenirElement(4).Valeur); Console.WriteLine(listeChainee.ObtenirElement(5).Valeur); } |


1 2 3 | public class ListeChaineeEnumerator<T> : IEnumerator<T> { } |
1 2 3 4 5 6 7 8 9 | public IEnumerator<T> GetEnumerator() { return new ListeChaineeEnumerator<T>(this); } IEnumerator IEnumerable.GetEnumerator() { return new ListeChaineeEnumerator<T>(this); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class ListeChainee<T> : IEnumerable<T> { […Code identique au TP précédent…] public IEnumerator<T> GetEnumerator() { return new ListeChaineeEnumerator<T>(this); } IEnumerator IEnumerable.GetEnumerator() { return new ListeChaineeEnumerator<T>(this); } } |
J’espère que vous avez au moins réussi ça. 
1 2 3 | public class ListeChaineeEnumerator<T> : IEnumerator<T> { } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class ListeChaineeEnumerator<T> : IEnumerator<T> { private int indice; private ListeChainee<T> listeChainee; public ListeChaineeEnumerator(ListeChainee<T> liste) { indice = -1; listeChainee = liste; } public void Dispose() { } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | public class ListeChaineeEnumerator<T> : IEnumerator<T> { private int indice; private ListeChainee<T> listeChainee; public ListeChaineeEnumerator(ListeChainee<T> liste) { indice = -1; listeChainee = liste; } public void Dispose() { } public bool MoveNext() { indice++; Chainage<T> element = listeChainee.ObtenirElement(indice); return element != null; } public T Current { get { Chainage<T> element = listeChainee.ObtenirElement(indice); if (element == null) return default(T); return element.Valeur; } } object IEnumerator.Current { get { return Current; } } public void Reset() { indice = -1; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | public class ListeChaineeEnumerator<T> : IEnumerator<T> { private Chainage<T> courant; private ListeChainee<T> listeChainee; public ListeChaineeEnumerator(ListeChainee<T> liste) { courant = null; listeChainee = liste; } public void Dispose() { } public bool MoveNext() { if (courant == null) courant = listeChainee.Premier; else courant = courant.Suivant; return courant != null; } public T Current { get { if (courant == null) return default(T); return courant.Valeur; } } object IEnumerator.Current { get { return Current; } } public void Reset() { courant = null; } } |

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | public class ListeChainee<T> : IEnumerable<T> { public Chainage<T> Premier { get; private set; } public Chainage<T> Dernier { get { if (Premier == null) return null; Chainage<T> dernier = Premier; while (dernier.Suivant != null) { dernier = dernier.Suivant; } return dernier; } } public void Ajouter(T element) { if (Premier == null) { Premier = new Chainage<T> { Valeur = element }; } else { Chainage<T> dernier = Dernier; dernier.Suivant = new Chainage<T> { Valeur = element, Precedent = dernier }; } } public Chainage<T> ObtenirElement(int indice) { Chainage<T> temp = Premier; for (int i = 1; i <= indice; i++) { if (temp == null) return null; temp = temp.Suivant; } return temp; } public void Inserer(T element, int indice) { if (indice == 0) { if (Premier == null) Premier = new Chainage<T> { Valeur = element }; else { Chainage<T> temp = Premier; Premier = new Chainage<T> { Suivant = temp, Valeur = element }; temp.Precedent = Premier; } } else { Chainage<T> elementAIndice = ObtenirElement(indice); if (elementAIndice == null) Ajouter(element); else { Chainage<T> precedent = elementAIndice.Precedent; Chainage<T> temp = precedent.Suivant; precedent.Suivant = new Chainage<T> { Valeur = element, Precedent = precedent, Suivant = temp }; } } } public IEnumerator<T> GetEnumerator() { Chainage<T> courant = Premier; while (courant != null) { yield return courant.Valeur; courant = courant.Suivant; } } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | public interface ICarnivore { void Manger(); } public interface IFrugivore { void Manger(); } public class Homme : ICarnivore, IFrugivore { public void Manger() { Console.WriteLine("Je mange"); } } class Program { static void Main(string[] args) { Homme homme = new Homme(); homme.Manger(); ((ICarnivore)homme).Manger(); ((IFrugivore)homme).Manger(); } } |
Je mange Je mange Je mange |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public class Homme : ICarnivore, IFrugivore { public void Manger() { Console.WriteLine("Je mange"); } void IFrugivore.Manger() { Console.WriteLine("Je mange en tant que IFrugivore"); } void ICarnivore.Manger() { Console.WriteLine("Je mange en tant que ICarnivore"); } } |
Je mange Je mange en tant que ICarnivore Je mange en tant que IFrugivore |
|
|
[C++] Notions avancées |
|
|
Les structures de contrôle |
|
|
Utiliser la mémoire |
|
|
TP : La POO en pratique avec ZString |