Structure
les structures | ||||
---|---|---|---|---|
connaitre les unité: | x mod 10 | 345 mod 10 = 5 | ||
recuperer l'incide c'un tableau | for(int i=tabjeux.length-1;i>=1;i--){ for(int j=tabjeux[tabjeux.length-1].length-1;j>=1;j--){ indice= (i*(tableau[tableau.longueur-1].longueur-1))-((tableau[tableau.longueur-1].longueur-1)-j); } } |
les structures | ||||
---|---|---|---|---|
inverser deux variables en xor | A <- A - B B <- A + B A <- B - A |
les listes | ||||
---|---|---|---|---|
structure | ||||
enregistrement liste { entier valeur; Liste suivant; fonction sans retour Liste(entier premier,Liste reste){ valeur<- premier; suivant<- reste; } fonction avec retour entier tete(){ retourne this.valeur; } fonction avec retour entier queue(){ retourne this.suivant; } } |
public class liste { static class Liste{ private int valeur; private Liste suivant; public Liste(int premier,Liste reste){ valeur= premier; suivant= reste; } public int tete(){ return(valeur); } public Liste queue(){ return(suivant); } } |
typedef struct element element; struct element { int val; struct element *nxt; };typedef element* llist; | ||
appartient | ||||
Appel -> boolean present=maliste.appartient(x,l) fonction avec retour boolean appartient(entier x,liste l) tant que (l différent de vide) faire si (l.valeur== x) alors retourne vrai l<- l.suivant; fin tant que retourne false; fin | ||||
insérer après | ||||
Appel -> maliste=maliste.insererapres(x,y,l) fonction sans retour insererapres(entier x,entier y,liste l) tant que (l différent de null) si (l.valeur différent de x) alors l<- l.suivant sinon liste q = new liste(y,p.suivant); p.suivant=q; retourne l fin si fin tan que fin | ||||
les Piles | ||||
---|---|---|---|---|
structure | ||||
enregistrement Piles { Liste L; Piles(){ this.L<-null; } fonction avec retour booleen estVide(Piles p){ retourne p.L==null; } fonction sans retour empiler(entier a,Piles p){ p.L<-CreerListe(a,p.L); } fonction sans retour depiler(Piles p) { p.L<-p.L.suivant; } fonction avec retour entier sommet(Piles p){ retourne(p.L.tete()); } } | static class Piles { private Liste L; public Piles(){ L=null; } public boolean estVide(Piles p){ return p.L==null; } public void empiler(int a,Piles p){ p.L=CreerListe(a,p.L); } public void depiler(Piles p) { p.L=p.L.queue(); } public int sommet(Piles p){ return(p.L.tete()); } } |
struct stack { struct stack *prev; struct stack *next; void *data; }; stack_s *stack_new (void) { return (NULL); } void stack_push (stack_s ** pp_stack, void *data) { if (pp_stack != NULL) { stack_s *p_p = *pp_stack; stack_s *p_l = NULL; p_l = malloc (sizeof (*p_l)); if (p_l != NULL) { p_l->data = data; p_l->next = NULL; p_l->prev = p_p; if (p_p != NULL) p_p->next = p_l; *pp_stack = p_l; } else { fprintf (stderr, "Memoire insuffisante\n"); exit (EXIT_FAILURE); } } return; } void *stack_pop (stack_s ** pp_stack) { void *ret = NULL; if (pp_stack != NULL && *pp_stack != NULL) { stack_s *p_l = *pp_stack; stack_s *p_p = p_l->prev; if (p_p != NULL) p_p->next = NULL; ret = p_l->data; free (p_l); p_l = NULL; *pp_stack = p_p; } return (ret); } dans le fichier .h typedef struct stack stack_s; stack_s *stack_new (void); void stack_push (stack_s **, void *); void *stack_pop (stack_s **); void stack_delete (stack_s **); |
les files | ||||
---|---|---|---|---|
structure | ||||
enregistrement file tableau d'entier[] tab; entier queue; entier tete; entier taille; fin enregistrement fonction avec retour file creefile(entier x) File f; f.taille=x; f.tab=new int[f.taille]; f.queue=0; f.tete=0; return f; } fonction avec retour boolean estVide(File f){ return(f.tete==f.queue); } fonction avec retour boolean estPleine(File f){ return(((f.queue+1)%f.taille)==f.tete); } fonction avec retour entier enfiler(int x,File f){ if(estPleine(f))return (-1); f.tab[f.queue]=x; f.queue=(f.queue+1)%f.taille; return(0); } fonction avec retour entier defiler(int x,File f){ if(estVide(f))return (-1); x =f.tab[f.tete]; f.tete=(f.tete+1)%f.taille; return(0); } } |
static class File{ private int[] tab; private int queue;//pointe sur une case vide qui recevra le prochain élément private int tete;//pointe sur lélément le plus ancient dans la tete private int taille; //ne contiendras pas plus de taille -1 elements } public static File creefile(int t){ File f=new File(); f.taille=t; f.tab=new int[f.taille]; f.queue=0; f.tete=0; return f; } public static boolean estVide(File f){ return(f.tete==f.queue); } public static boolean estPleine(File f){ return(((f.queue+1)%f.taille)==f.tete); } public static int enfiler(int x,File f){ if(estPleine(f))return (-1); f.tab[f.queue]=x; f.queue=(f.queue+1)%f.taille; return(0); } public static int defiler(int x,File f){ if(estVide(f))return (-1); x =f.tab[f.tete]; f.tete=(f.tete+1)%f.taille; return(0); } |
typedef struct Element Element; struct Element { int nombre; Element *suivant; }; typedef struct File File; struct File { Element *premier; }; void enfiler(File *file, int nvNombre) { Element *nouveau = malloc(sizeof(*nouveau)); if (file == NULL || nouveau == NULL) { exit(EXIT_FAILURE); } nouveau->nombre = nvNombre; nouveau->suivant = NULL; if (file->premier != NULL) /* La file n'est pas vide */ { /* On se positionne à la fin de la file */ Element *elementActuel = file->premier; while (elementActuel->suivant != NULL) { elementActuel = elementActuel->suivant; } elementActuel->suivant = nouveau; } else /* La file est vide, notre élément est le premier */ { file->premier = nouveau; } } int defiler(File *file) { if (file == NULL) { exit(EXIT_FAILURE); } int nombreDefile = 0; /* On vérifie s'il y a quelque chose à défiler */ if (file->premier != NULL) { Element *elementDefile = file->premier; nombreDefile = elementDefile->nombre; file->premier = elementDefile->suivant; free(elementDefile); } return nombreDefile; } |
les Arbre | ||||
---|---|---|---|---|
structure | ||||
enregistrement arbre entier valeur; arbre filsdroit; arbre filsgauche; fin enregistrement fonction avec retour arbre creearbre(entier x,arbre G,arbre D) arbre A; A.valeur<- x; A.filsgauche<- G; A.filsdroit<- D; retourne A; fin | ||||
chercher | ||||
fonction avec retour boolean chercher(entier x,arbre A) debut si (a==null) alors retourne faux sinon si A.valeur==x alors retourne vraix; sinon si x<A.valeur alors retourne chercher(x,A.filsgauche) sinon retourne chercher(x,A.filsdroit) fin si fin si fin si fin | ||||
calculer hauteur | ||||
fonction avec retour entier calculerhauteur(arbre a) debut si (a==null) alors retourne 1; retourne 1+ Max(calculerhauteur(A.filsdroit),calculerhauteur(A.filsgauche)) fin si fin | ||||
rotation | ||||
fonction avec retour arbre rotationGauche(arbre A) debut arbre B; B<-A.filsdroit; A.filsdroit<-B.filsgauche; B.filsgauche<-A retourne B; fin fonction avec retour arbre rotationDroite(arbre A) debut arbre B; B<-A.filsgauche; A.filsgauche<-B.filsdroit; B.filsdroit<-A retourne B; fin fonction avec retour arbre rotationDG(arbre A) debut SI(A != null) rotationDroite(A.filsDroit); rotationGauche(A); fin si fin fonction avec retour arbre rotationGD(arbre A) debut SI(A != null) rotationGauche(A.filsGauche); rotationDroite(A); fin si fin | ||||
supprimer | ||||
fonctin avec retour arbre supprimer(arbre A,valeur x) debut si (a==vide) alors retourne vide; fin si si (x==A.valeur et A.filsdroit==vide) alors retourne A.filsgauche fin si si (x==A.valeur et A.filsgauche!=vide et A.filsdroit!=vide) alors A.valeur<-max(A.filsgauche); A.filsgauche<-dmax(a.filsgauche); retourn A; fin si si (x>a.valeur) alors A.filsgauche<-supprimer(A.filsdroit,x); fin si si (x<a.valeur) alors A.filsdroit<-supprimer(A.filsgauche,x); fin si fonction avec retour entier max(arbre A) debut si (A.filsdroit==vide) alors retourne A.valeur; retourne max(A.filsdroit); fin fonction avec retour entier dmax(arbre A) debut si (A.filsdroit==vide) alors retourne A.filsgauche; retourne dmax(A.filsdroit); fin | ||||
les graphes | ||||
---|---|---|---|---|
arc | ||||
fonction avec retour boolean arc(entier x, entier y,graphe[][] g) si( x>g.taille()-1||y>g.taille()-1 retourne faux; retourne g[y][x]; |
boolean arc(int x,int y) { if(x>this.graphe.length-1||y>this.graphe.length-1) return false; return this.graphe[y][x]; } |
|||
arrete | ||||
fonction avec retour boolean arc(entier x, entier y,graphe[][] g) si( x>g.taille()-1||y>g.taille()-1 retourne faux; retourne g[y][x] ou g[x][y]; |
boolean arete(int x,int y) { if(x>this.graphe.length-1||y>this.graphe.length-1) return false; return (this.graphe[x][y]||this.graphe[y][x]); } |
|||
successeur | ||||
fonctino avec retour List successeur(entier s,graphe[][] g){ List<entier> liste= new listet<entier> (); si (s>g.taille()-1) return liste; pour ( i allant de 0 à g.taille()) { si (g[i][s]==vrai) liste.add(i); } retourne liste; } |
List<Integer> successeur(int s){ List<Integer> liste= new ArrayList<Integer> (); if(s>this.graphe.length-1) return liste; for(int i=0;i<this.graphe.length;i++) { if(this.graphe[i][s]) liste.add(i); } return liste; } |
|||
predecesseur | ||||
fonctino avec retour List predecesseur(entier s,graphe[][] g){ List<entier> liste= new listet<entier> (); si (s>g.taille()-1) return liste; pour ( i allant de 0 à g.taille()) { si (g[s][i]==vrai) liste.add(i); } retourne liste; } |
List<Integer> predecesseur(int s){ List<Integer> liste= new ArrayList<Integer> (); if(s>this.graphe.length-1) return liste; for(int i=0;i<this.graphe.length;i++) { if(this.graphe[s][i]) liste.add(i); } return liste; } |
|||
descendant | ||||
fonction avec retour List descendant(entier s,graphe[][] g){ List<entier> liste_temporaire= new listet<entier> (); List<entier> liste= new listet<entier> (); liste_temporaire=successeur(s,g); tant que(!liste_temporaire different de vide) faire { pour(i allant de 0 à liste_temporaire.taille()) faire { si(liste ne contient pas (liste_temporaire(i))) { liste_temporaire.ajoutertout(successeur(liste_temporaire(i),g)); liste.ajouter(liste_temporaire(i)); liste_temporaire.supprimer(i); } sinon { liste_temporaire.supprimer(i); } } } pour(i allant de 0 à liste.taille()) { si(s==liste(i)) { liste.supprimer(i); } } retourne liste; } |
List<Integer> descendant(int s){ List<Integer> liste_temporaire=new ArrayList<Integer>(); List<Integer>liste=new ArrayList<Integer>(); liste_temporaire=this.successeur(s); while(!liste_temporaire.isEmpty()) { for(int i = 0; i < liste_temporaire.size(); i++) { if(!liste.contains(liste_temporaire.get(i))) { liste_temporaire.addAll(this.successeur(liste_temporaire.get(i))); liste.add(liste_temporaire.get(i)); liste_temporaire.remove(i); } else { liste_temporaire.remove(i); } } } for(int x = 0; x < liste.size(); x++) { if(s==liste.get(x)) { liste.remove(x); } } return liste; } |
|||
ancetres | ||||
fonction avec retour List ancetres(entier s,graphe[][] g){ List<entier> liste_temporaire= new listet<entier> (); List<entier> liste= new listet<entier> (); liste_temporaire=predecesseur(s,g); tant que(!liste_temporaire different de vide) faire { pour(i allant de 0 à liste_temporaire.taille()) faire { si(liste ne contient pas (liste_temporaire(i))) { liste_temporaire.ajoutertout(predecesseur(liste_temporaire(i),g)); liste.ajouter(liste_temporaire(i)); liste_temporaire.supprimer(i); } sinon { liste_temporaire.supprimer(i); } } } pour(i allant de 0 à liste.taille()) { si(s==liste(i)) { liste.supprimer(i); } } retourne liste; } |
List<Integer> ancetres(int s){ List<Integer> liste_temporaire=new ArrayList<Integer>(); List<Integer>liste=new ArrayList<Integer>(); liste_temporaire=this.predecesseur(s); while(!liste_temporaire.isEmpty()) { for(int i = 0; i < liste_temporaire.size(); i++) { if(!liste.contains(liste_temporaire.get(i))) { liste_temporaire.addAll(this.predecesseur(liste_temporaire.get(i))); liste.add(liste_temporaire.get(i)); liste_temporaire.remove(i); } else { liste_temporaire.remove(i); } } } for(int x = 0; x < liste.size(); x++) { if(s==liste.get(x)) { liste.remove(x); } } return liste; } |
|||
|