diff --git a/.classpath b/.classpath
index c0b4a16..5a7974b 100644
--- a/.classpath
+++ b/.classpath
@@ -7,6 +7,6 @@
-
+
diff --git a/Cours/M313_2020_2021_CM3_Anime.pdf b/Cours/M313_2020_2021_CM3_Anime.pdf
new file mode 100644
index 0000000..00bf1cd
Binary files /dev/null and b/Cours/M313_2020_2021_CM3_Anime.pdf differ
diff --git a/Enoncés/TD/TD3_Liste.pdf b/Enoncés/TD/TD3_Liste.pdf
new file mode 100644
index 0000000..8df8549
Binary files /dev/null and b/Enoncés/TD/TD3_Liste.pdf differ
diff --git a/Enoncés/TP/TP3_Crible.pdf b/Enoncés/TP/TP3_Crible.pdf
new file mode 100644
index 0000000..826c654
Binary files /dev/null and b/Enoncés/TP/TP3_Crible.pdf differ
diff --git a/src/TP2/demoTris.java b/src/TP2/demoTris.java
deleted file mode 100644
index ffac5be..0000000
--- a/src/TP2/demoTris.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package TP2;
-
-import java.util.Arrays;
-
-public class demoTris {
-
- int[] tabA = new int[8];
- tabA[0] = 8;
- tabA[1] = 4;
- tabA[2] = 25;
- tabA[3] = 28;
- tabA[4] = 13;
- tabA[5] = 40;
- tabA[6] = 30;
- tabA[7] = 23;
-
- public static void triFusion(int[] numbers) {
- mergeSort(numbers, 0, numbers.length);
- }
-
- private static void mergeSort(int[] tab, int min, int max) {
- int mid = 0;
- if(min != max) {
- mid = (min+max)/2;
-
- mergeSort(tab, min, mid);
- mergeSort(tab, mid+1, max);
-
- int[] tmpTab = new int[max-min+1];
- int[] t1 = Arrays.copyOfRange(tab, min, mid+1);
- int[] t2 = Arrays.copyOfRange(tab, mid+1, max);
-
- Fusion(t1, t2, tmpTab);
-
- for(int i=0; i < max-min; i++) {
- tab[min+i] = tmpTab[i];
- }
- }
- }
-
- private static void Fusion(int[] tab1, int[] tab2, int[] tab) {
- int i = 0; int i1 = 0; int i2 = 0;
-
- while(i1 < tab1.length && i2 < tab2.length) {
- if(tab1[i1] < tab2[i2]) {
- tab[i] = tab1[i1];
- i++;i1++;
- } else {
- tab[i] = tab2[i2];
- i++;i2++;
- }
- }
-
- while(i1 l = new Liste();
+
+ public Cribble(int nb) {
+ this.l.remplirListe(nb);
+ }
+
+ public Liste getList() {
+ return this.l;
+ }
+
+ @Override
+ public String toString() {
+ return this.getList().toString();
+ }
+
+ public static void main(String[] args) {
+ Cribble c = new Cribble(20);
+ System.out.println(c.toString());
+ }
+
+}
diff --git a/src/TP3/Liste.java b/src/TP3/Liste.java
new file mode 100644
index 0000000..befb75b
--- /dev/null
+++ b/src/TP3/Liste.java
@@ -0,0 +1,237 @@
+package TP3;
+
+import java.lang.reflect.Array;
+import java.util.Iterator;
+
+
+/**
+ * An empty list is an instance of class {@code Liste} where {@code head=queue=null}.
+ * A list containing one element {@code v} is represented by 2 objects of {@code Liste} where :
+ *
+ * - {@code v} is stored in {@code head} attribute of first object
+ * - queue attribute of first object refers to second {@code Liste} object where head=queue=null.
+ *
+ * @author Dr. Denis PALLEZ
+ * {@link http://denispallez.i3s.unice.fr}
+ * @version 2017-2018
+ */
+
+public class Liste { //
+ private E tete;
+ private Liste queue;
+
+ public Liste() {
+ tete = null;
+ queue = null;
+ }
+ public Liste(E n, Liste suivante) {
+ tete=n ;
+ queue = suivante ;
+ }
+ public E getTete() {
+ return tete;
+ }
+ public Liste getQueue() {
+ return queue;
+ }
+ public boolean estVide() {
+ return (tete==null) ;
+ }
+
+ @Override
+ public String toString() {
+ if (estVide()){
+ return "null";
+ }
+ else {
+ return "("+getTete()+ ", " + getQueue()+")";
+ }
+ }
+
+ public int taille() {
+ if (estVide())
+ return 0;
+ else
+ return 1 + queue.taille();
+ }
+ public boolean contient(E v) {
+ if(estVide()) {
+ return false;
+ } else if(this.tete == v) {
+ return true;
+ } else {
+ return this.getQueue().contient(v);
+ }
+ }
+ public Liste ajouteTete(E v) {
+ if (this.estVide())
+ return new Liste(v,new Liste()) ;
+ else
+ return new Liste(v,this.getQueue().ajouteTete(getTete())) ;
+ }
+
+ public void ajouteTeteProc(E v) {
+ if(this.estVide()) {
+ this.tete = v;
+ this.queue = null;
+ } else {
+ Liste tmp = new Liste(this.getTete(), this.getQueue());
+ this.tete = v;
+ this.queue = tmp;
+ }
+ }
+
+ public Liste ajouteQueue(E v) {
+ if(this.estVide()) {
+ return new Liste(v, new Liste());
+ } else {
+ return new Liste(this.tete, queue.ajouteQueue(v));
+ }
+ }
+
+ public Liste suppTete() {
+ if (estVide())
+ return new Liste() ;
+ else if (this.getQueue().estVide())
+ return new Liste() ;
+ else
+ return this.getQueue().getQueue().ajouteTete(getQueue().getTete()) ;
+ }
+
+ public void ajouteQueueProc(E v) {
+ if (estVide()) {
+ tete = v;
+ queue = new Liste() ;
+ }
+ else
+ queue.ajouteQueueProc(v);
+ }
+
+ public Liste supprime(E v) {
+ Liste l = new Liste();
+ //TO DO
+ return l;
+ }
+
+
+ public void suppTeteproc() {
+ //TO DO
+ }
+
+ public Liste suppQueue() {
+ if(this.estVide()) { //cas vide
+ return new Liste();
+ } else if(this.getQueue().estVide()) {//cas avec un seul élément
+ return new Liste();
+ } else { //il faut au moins copier la tête caril y a un autre élément derrière
+ return new Liste(this.getTete(), this.getQueue().suppQueue());
+ }
+ }
+
+ public void suppQueueProc() {
+ if (estVide()) {}
+ else if (getQueue().estVide()) {
+ tete=null;
+ queue.finalize();
+ queue=null ;
+ }
+ else getQueue().suppQueueProc();
+ }
+
+ public E get(int pos) {
+ if (estVide())
+ return null ;
+ else if (pos==0) return tete ;
+ else return getQueue().get(pos-1) ;
+ }
+
+ public void efface() {
+ //TO DO
+ }
+
+ public Liste ajouteTous(Liste l) {
+ Liste ll = new Liste();
+ //TO DO
+ return ll;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean equals(Object o) {
+ if (o instanceof Liste>) {
+ Liste param = (Liste)(o) ;
+ if (estVide() && param.estVide())
+ return true;
+ else if (!estVide() && !param.estVide()) {
+ if (tete.equals(param.tete))
+ return queue.equals(param.queue) ;
+ else return false ;
+ }
+ else return false ;
+
+ }
+ return false ;
+ }
+
+ public void supprimeProc(E v) {
+ //TO DO
+ }
+
+ public Liste supprimeTous(E v) {
+ Liste l = new Liste();
+ //TO DO
+ return l;
+ }
+
+ public void supprimeTousProc(E v) {
+ //TO DO
+ }
+
+ public Liste inverse() {
+ Liste l = new Liste();
+ //TO DO
+ return l;
+ }
+
+ public void inverseProc() {
+ //TO DO
+ }
+
+ public void finalize() {
+ efface() ;
+ }
+
+ public E[] toArray() {
+ Liste l=this ;
+ @SuppressWarnings("unchecked")
+ E[] array = (E[])Array.newInstance(tete.getClass(),l.taille()) ;
+ int i=0 ;
+ while (!(l.estVide())) {
+ array[i]=l.tete;
+ l=l.queue;
+ i++ ;
+ }
+ return array ;
+ }
+
+ public Liste delMultiple(int n) {
+ if(!this.estVide()) {
+ if((Integer)this.getTete()%n == 0) {
+ return this.getQueue().delMultiple(n);
+ } else {
+ return new Liste((Integer)this.getTete(), this.getQueue().delMultiple(n));
+ }
+ } else {
+ return new Liste();
+ }
+ }
+
+ public Liste remplirListe(int n) {
+ if(n <= 1) {
+ return new Liste();
+ } else {
+ return remplirListe(n-1).ajouteQueue(n);
+ }
+ }
+
+}
diff --git a/src/TP3/MethodesListes.java b/src/TP3/MethodesListes.java
new file mode 100644
index 0000000..9970992
--- /dev/null
+++ b/src/TP3/MethodesListes.java
@@ -0,0 +1,5 @@
+package TP3;
+
+public class MethodesListes {
+
+}
diff --git a/tests/TP2/TrisTestEtudiant.java b/tests/TP2/TrisTestEtudiant.java
index c5b102c..079299d 100644
--- a/tests/TP2/TrisTestEtudiant.java
+++ b/tests/TP2/TrisTestEtudiant.java
@@ -73,7 +73,7 @@ public class TrisTestEtudiant {
}
public static void triRapide(int[] numbers) {
- quickSort();
+ //quickSort();
}
private static void exchange(int[] t, int i, int j) {
@@ -145,6 +145,11 @@ public class TrisTestEtudiant {
quickSort(numbers, i, max);
}
+ private static int[] partitionnerPivot(int[] numbers, int i, int j, int pivot) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
@Before
public void setUp() throws Exception {
}