using System.Collections.Generic;
var lst = new Liste<string>();
foreach (var s in new[] { "J'aime", "mon", "prof" })
lst.Accepter(s => Console.Write($"{s} "));
string plusseLongue = null;
if (plusseLongue == null || s.Length > plusseLongue.Length)
Console.WriteLine($"Chaîne la plusse longue : {plusseLongue}");
string plusseCourte = null;
if (plusseCourte == null || s.Length < plusseCourte.Length)
Console.WriteLine($"Chaîne la plusse courte : {plusseCourte}");
class ListeVideException : Exception { }
class Liste<T> where T : IComparable<T>
public Noeud Succ { get; set; } = null;
public T Valeur { get; private init; }
Noeud Tête { get; set; } = null;
Noeud Queue { get; set; } = null;
public bool EstVide => Tête == null;
public void AjouterDébut(T valeur)
var p = new Noeud(valeur);
public void AjouterFin(T valeur)
Queue.Succ = new Noeud(valeur);
public void SupprimerDébut()
throw new ListeVideException();
public int Count { get; private set; } = 0;
public void ForEach(Action<T> f)
for(var p = Tête; p != null; p = p.Succ)
public Liste(Liste<T> autre)
autre.ForEach(AjouterFin);
public T ConsulterDébut() =>
EstVide? throw new ListeVideException() : Tête.Valeur;
public Liste(IEnumerable<T> objs)
public void Accepter(Action<T> f)