Accueil > > > FILE DE PRIORITÉ DYNAMIQUE
FILE DE PRIORITÉ DYNAMIQUE
Information sur la source
Description
File de priorité dynamique , avec les opérations de base. FilePrioDyn(TYPE[],int); // le constructeur vide est désactivé void ajouter(TYPE); // ajouter un element bool fileVide(); // etat de la file, vide ou non TYPE premier(); // retourne la valeur de la racine TYPE reduire(); // enlève la racine, puis tamise void tamiser(int); //organiser les élémeent du haut vers le bas void percoler(int); // organiser les éléments du bas vers le haut void construire(TYPE[],int); // construction de la file dynamique de priorité bool getVide(); // accesseur en lecture de (bool vide) void afficher(); // afficher la liste
Source
- #define TAILLE_MAX 524288
- /**
- * @author Mehdi El Masaodui
- *
- */
- template <typename TYPE>
- class FilePrioDyn{
-
- private:
- bool vide;
- int longueur;
- TYPE sommet;
- TYPE elements[TAILLE_MAX]; // éléments de la liste
-
- public:
- FilePrioDyn(TYPE[],int); // le constructeur vide est désactivé
- void ajouter(TYPE); // ajouter un element
- bool fileVide(); // etat de la file, vide ou non
- TYPE premier(); // retourne la valeur de la racine
- TYPE reduire(); // enlève la racine, puis tamise
- void tamiser(int); //organiser les élémeent du haut vers le bas
- void percoler(int); // organiser les éléments du bas vers le haut
- void construire(TYPE[],int); // construction de la file dynamique de priorité
- bool getVide(); // accesseur en lecture de (bool vide)
- void afficher(); // afficher la liste
- };
- /**
- * @param TYPE temp : tableau à base duquel on va construire la file de priorité
- * @param int taille : la taille du tableau, on la passe explicitement parceque on ne peut pas récuperer la taille du tableau sur l'objet tableau en C++
- *
- */
- template <typename TYPE>
- FilePrioDyn<TYPE>::FilePrioDyn(TYPE temp[],int taille){
- construire(temp,taille);
- }
- /**
- * @return L'état de la liste , true : vide , false : non-vide
- *
- */
-
- template <typename TYPE>
- bool FilePrioDyn<TYPE>::fileVide(){
- return getVide();
- }
- /**
- * @return L'état de la variable vide
- *
- */
- template <typename TYPE>
- bool FilePrioDyn<TYPE>::getVide(){
- return vide;
- }
-
- /**
- * @return Le sommet de la file de priorité
- */
- template <typename TYPE>
- TYPE FilePrioDyn<TYPE>::premier(){
- return elements[0];
- }
- /**
- * @return l'élément qui a été supprimé
- * @description retire un élément du sommet, réduit la taille de un et tamise
- */
-
- template <typename TYPE>
- TYPE FilePrioDyn<TYPE>::reduire(){
- TYPE temp;
- if(!fileVide()){
- elements[0]=elements[longueur];
- longueur=longueur--;
- tamiser(0);
- }else{
- /* la file est vide, aucun élément à retirer*/
- }
- return temp;
- }
-
- /**
- * @param val élément à ajouter à la fin
- * percoler à partir de l'élement ajouté
- */
-
- template <typename TYPE>
- void FilePrioDyn<TYPE>::ajouter(TYPE val){
- longueur++;
- elements[longueur]=val;
- percoler(val);
- }
-
- /**
- * @param temp tableau à partir duquel on construit la file de priorité
- * @param int taille taille du tableau
- * on ajoute un élément à la fin à chaque itération, on percole après chaque élément ajouté
- *
- */
- template <typename TYPE>
- void FilePrioDyn<TYPE>::construire(TYPE temp[],int taille){
- longueur=taille;
- int i;
- if(longueur>0){
- i=0;
- while(i<longueur){
- elements[i]=temp[i];
- percoler(i);
- i++;
- }
- }
-
- }
-
- /**
- * @param i , l'élémentt ajouté à partir duquel tamiser,
- * on tamise vers la bas de la structure
- *
- */
- template <typename TYPE>
- void FilePrioDyn<TYPE>::tamiser(int i){
-
- int k=i;
- int j=0; /* correction */
- while(j!=k){
- j=k;
- if(2*j<longueur && elements[2*j]>elements[k]){
- k=2*j;
- }
- if(2*j<longueur && elements[2*j+1]>elements[k]){
- k=2*j+1;
- }
- elements[j]=elements[k];
- }
- }
-
- /**
- * @int i element à partir duquel percoler
- * percoler est le fait de parcourir la structure à partir du dernier élément ajouté
- * pour verifier le principe de priorité ( ordre )
- *
- */
- template <typename TYPE>
- void FilePrioDyn<TYPE>::percoler(int i){
- int k=i;
- int j=0;
- while(j!=k){
- j=k;
- if(j>1 && elements[j/2]<elements[k]){
- k=j/2;
- }
- elements[j]=elements[k];
- }
- }
-
- /**
- * Affichage de la liste sous forme d'un arbre
- */
- template <typename TYPE>
- void FilePrioDyn<TYPE>::afficher(){
- int i=0;
- while(elements[i]){
- std::cout<<"|Element "<<i<<" : "<<elements[i]<<"";
- i++;
- }
- }
-
-
#define TAILLE_MAX 524288
/**
* @author Mehdi El Masaodui
*
*/
template <typename TYPE>
class FilePrioDyn{
private:
bool vide;
int longueur;
TYPE sommet;
TYPE elements[TAILLE_MAX]; // éléments de la liste
public:
FilePrioDyn(TYPE[],int); // le constructeur vide est désactivé
void ajouter(TYPE); // ajouter un element
bool fileVide(); // etat de la file, vide ou non
TYPE premier(); // retourne la valeur de la racine
TYPE reduire(); // enlève la racine, puis tamise
void tamiser(int); //organiser les élémeent du haut vers le bas
void percoler(int); // organiser les éléments du bas vers le haut
void construire(TYPE[],int); // construction de la file dynamique de priorité
bool getVide(); // accesseur en lecture de (bool vide)
void afficher(); // afficher la liste
};
/**
* @param TYPE temp : tableau à base duquel on va construire la file de priorité
* @param int taille : la taille du tableau, on la passe explicitement parceque on ne peut pas récuperer la taille du tableau sur l'objet tableau en C++
*
*/
template <typename TYPE>
FilePrioDyn<TYPE>::FilePrioDyn(TYPE temp[],int taille){
construire(temp,taille);
}
/**
* @return L'état de la liste , true : vide , false : non-vide
*
*/
template <typename TYPE>
bool FilePrioDyn<TYPE>::fileVide(){
return getVide();
}
/**
* @return L'état de la variable vide
*
*/
template <typename TYPE>
bool FilePrioDyn<TYPE>::getVide(){
return vide;
}
/**
* @return Le sommet de la file de priorité
*/
template <typename TYPE>
TYPE FilePrioDyn<TYPE>::premier(){
return elements[0];
}
/**
* @return l'élément qui a été supprimé
* @description retire un élément du sommet, réduit la taille de un et tamise
*/
template <typename TYPE>
TYPE FilePrioDyn<TYPE>::reduire(){
TYPE temp;
if(!fileVide()){
elements[0]=elements[longueur];
longueur=longueur--;
tamiser(0);
}else{
/* la file est vide, aucun élément à retirer*/
}
return temp;
}
/**
* @param val élément à ajouter à la fin
* percoler à partir de l'élement ajouté
*/
template <typename TYPE>
void FilePrioDyn<TYPE>::ajouter(TYPE val){
longueur++;
elements[longueur]=val;
percoler(val);
}
/**
* @param temp tableau à partir duquel on construit la file de priorité
* @param int taille taille du tableau
* on ajoute un élément à la fin à chaque itération, on percole après chaque élément ajouté
*
*/
template <typename TYPE>
void FilePrioDyn<TYPE>::construire(TYPE temp[],int taille){
longueur=taille;
int i;
if(longueur>0){
i=0;
while(i<longueur){
elements[i]=temp[i];
percoler(i);
i++;
}
}
}
/**
* @param i , l'élémentt ajouté à partir duquel tamiser,
* on tamise vers la bas de la structure
*
*/
template <typename TYPE>
void FilePrioDyn<TYPE>::tamiser(int i){
int k=i;
int j=0; /* correction */
while(j!=k){
j=k;
if(2*j<longueur && elements[2*j]>elements[k]){
k=2*j;
}
if(2*j<longueur && elements[2*j+1]>elements[k]){
k=2*j+1;
}
elements[j]=elements[k];
}
}
/**
* @int i element à partir duquel percoler
* percoler est le fait de parcourir la structure à partir du dernier élément ajouté
* pour verifier le principe de priorité ( ordre )
*
*/
template <typename TYPE>
void FilePrioDyn<TYPE>::percoler(int i){
int k=i;
int j=0;
while(j!=k){
j=k;
if(j>1 && elements[j/2]<elements[k]){
k=j/2;
}
elements[j]=elements[k];
}
}
/**
* Affichage de la liste sous forme d'un arbre
*/
template <typename TYPE>
void FilePrioDyn<TYPE>::afficher(){
int i=0;
while(elements[i]){
std::cout<<"|Element "<<i<<" : "<<elements[i]<<"";
i++;
}
}
Historique
- 30 juin 2008 14:23:03 :
- Ajout d'initialisations oubliés
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
equivalence dynamique entre deux structures [ par cassiopee ]
bonjour, Voila, j'ai un petit soucis. (eh oui c'est pour ca que j'ecris)En fait, ce que je veux dire par "equivalence dynamique entre deux structures"
structure ? [ par vero77lisa ]
Bonjour, Je travaille avec Borland C++Builder 6 Je dois spliter les lignes d'un fichier, en fonction du séparateur point-virgule ; Les données si
bleme avec les structures [ par djamine ]
j'ai un bleme j'aimerais que tu m'aide avec les structuresTAF:en utilisant un tableau de structure Je dois ecrire un programme qui saisi les noms et l
Question sur les tableaux de structures [ par Kleidp ]
Bonjour,j'ai quelques problèmes avec les tableaux de structure. Tout d'abord voici une de mes structures:typedef struct{ float
structure dynamique [ par gdpasmini ]
Hello !Je dois récupérer des informations dans des paquets de type H225. Le probleme est que la taille et les champs de ces paquets sont tr&
Utiliser des fonctions dans des structures [ par christophedlr ]
Bonsoir,Dans mon programme en C++, je souhaite pouvoir utiliser une fonction d'initialisation dans ma structure.J'ai vu un programme d'exemple ici me
tableau dynamique de structure en C ? [ par axl79 ]
salutje voudrai faire un tableau dynamique de structures. voici ma structure: struct struct_arete { int sommet1; int sommet2; int quantite;} arete;com
tableau dynamique de structures (niveau debutant) [ par SYL666 ]
bonjour,j'ai un petit probleme: j'aimerai definir un tableau dynamique dont la taille n'est connu qu'a l'execution.voila mon code:{ long max; struct
Règles d'alignement + structure + fichier [ par visualstar ]
Bonsoir, J'ai fais un p'tit programme qui écris simplement des structures dans un fichier. Puis après je fais le dump du fichier en question et j'aura
Strcpy entre deux structures [ par loic911 ]
Salut, J'ai deux structures: Patients et Org. La première répertorie un certain nombre de patient et l'autre copie leur numéros et leur
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|