â Ă maĂźtriser
đ En C, lâopĂ©rateur & rĂ©cupĂšre lâadresse dâune variable et lâopĂ©rateur unaire * permet dâaccĂ©der au contenu de la variable pointĂ©e.
đ La fonction malloc rĂ©serve un bloc de la taille demandĂ©e en octets et renvoie son adresse, ou NULL si la mĂ©moire disponible est insuffisante.
đ AprĂšs une allocation dynamique, il faut tester le pointeur retournĂ© contre NULL, puis libĂ©rer la mĂ©moire obtenue avec malloc, calloc ou realloc Ă lâaide de free lorsquâelle nâest plus utilisĂ©e.
Compléments
đ La fonction calloc alloue la mĂ©moire pour un nombre donnĂ© dâĂ©lĂ©ments et initialise cette zone Ă zĂ©ro, tandis que realloc rĂ©duit ou augmente la taille dâun bloc existant.
Adresse â pointeur â contenu
â Ă maĂźtriser
đ Processus â La recherche sĂ©quentielle compare successivement chaque Ă©lĂ©ment du tableau avec lâobjet recherchĂ© et sâarrĂȘte lorsque lâobjet est trouvĂ© ou que tous les Ă©lĂ©ments ont Ă©tĂ© examinĂ©s.
đ Processus â La recherche dichotomique dĂ©coupe Ă chaque Ă©tape une collection triĂ©e autour dâun indice mĂ©dian et poursuit la recherche dans la moitiĂ© infĂ©rieure ou supĂ©rieure selon la comparaison.
đ Processus â Le tri par sĂ©lection recherche le plus petit Ă©lĂ©ment de la partie non triĂ©e et le permute avec le premier Ă©lĂ©ment de cette partie.
đ Processus â Le tri Ă bulles compare des cases contiguĂ«s et fait remonter les plus petits Ă©lĂ©ments vers le dĂ©but en rĂ©pĂ©tant les passages dans le tableau.
đ Processus â Le calcul rĂ©cursif de la factorielle utilise le cas de base 0! = 1 et la relation n! = n Ă (nâ1)! pour les autres valeurs de n.
⥠La recherche repose sur une relation dâĂ©quivalence telle que lâĂ©galitĂ©, tandis que le tri repose sur une relation dâordre total telle que lâinfĂ©rioritĂ© ou lâĂ©galitĂ©.
Compléments
đ§ź Formule â Le tri par sĂ©lection et le tri Ă bulles prĂ©sentĂ©s ont une complexitĂ© en temps de lâordre de O(nÂČ) dans le cas Ă©tudiĂ©.
Chercher, ordonner, sâappeler
â Ă maĂźtriser
đ Processus â La manipulation dâun fichier suit lâordre gĂ©nĂ©ral ouverture, lecture ou Ă©criture, puis fermeture.
đ La fonction fopen associe un fichier physique Ă un descripteur FILE* et renvoie NULL si lâouverture Ă©choue.
đ La fonction fread lit des Ă©lĂ©ments binaires dans un tampon et la fonction fwrite Ă©crit des Ă©lĂ©ments binaires depuis un tampon, en utilisant leur taille et leur nombre.
⥠Un fichier texte est une suite de caractĂšres Ă accĂšs sĂ©quentiel, tandis quâun fichier binaire est organisĂ© en enregistrements et permet notamment lâaccĂšs direct.
Compléments
đ La fonction fseek dĂ©place le descripteur dâun nombre dâoctets calculĂ© depuis SEEK_SET, SEEK_CUR ou SEEK_END, et renvoie zĂ©ro en cas de rĂ©ussite.
Ouvrir â traiter â fermer
â Ă maĂźtriser
đ Processus â Lâinitialisation dâune liste consiste Ă affecter NULL Ă debut et fin et zĂ©ro Ă taille avant toute autre opĂ©ration.
đ Processus â Lâinsertion dâun maillon consiste Ă dĂ©clarer ou crĂ©er lâĂ©lĂ©ment, allouer sa mĂ©moire, remplir ses donnĂ©es, mettre Ă jour les pointeurs nĂ©cessaires et incrĂ©menter la taille de la liste.
đ Processus â Lâinitialisation dâune liste simplement chaĂźnĂ©e met les pointeurs debut et fin Ă NULL et la taille Ă zĂ©ro avant toute autre opĂ©ration.
đ Processus â Pour insĂ©rer en tĂȘte, on crĂ©e un maillon, on lui affecte la donnĂ©e, on fait pointer son champ suivant vers debut, on actualise debut et, si la liste Ă©tait vide, fin, puis on incrĂ©mente la taille.
đ Processus â La suppression en tĂȘte sauvegarde le premier maillon, avance debut vers son successeur, dĂ©crĂ©mente la taille, met fin Ă NULL si la liste devient vide, rĂ©cupĂšre la donnĂ©e puis libĂšre le maillon.
⥠Les tableaux offrent un accĂšs direct au iá” Ă©lĂ©ment sans dĂ©pendre de i, tandis que les listes chaĂźnĂ©es nĂ©cessitent un parcours sĂ©quentiel depuis la tĂȘte et utilisent un espace supplĂ©mentaire pour les pointeurs.
Compléments
đ Processus â Lâinsertion aprĂšs une position donnĂ©e est refusĂ©e si la position est infĂ©rieure Ă 1 ou supĂ©rieure ou Ă©gale Ă la taille, et sinon le nouveau maillon est reliĂ© entre lâĂ©lĂ©ment courant et son successeur avant lâincrĂ©mentation de la taille.
đ Processus â Lâaffichage parcourt les maillons de debut jusquâĂ NULL, tandis que la destruction supprime successivement les maillons en tĂȘte jusquâĂ obtenir une taille nulle, puis libĂšre la structure de liste.
TĂȘte â maillon â queue
â Ă maĂźtriser
đ Processus â Lors dâune insertion dans une liste doublement chaĂźnĂ©e, les pointeurs suivant et precedent du nouveau maillon ainsi que les pointeurs des maillons voisins sont actualisĂ©s, avec une mise Ă jour de debut ou fin si nĂ©cessaire.
đ Processus â La suppression par position traite le premier Ă©lĂ©ment, le dernier ou un Ă©lĂ©ment intermĂ©diaire en reliant ses voisins, en rĂ©cupĂ©rant sa donnĂ©e, en libĂ©rant sa mĂ©moire et en dĂ©crĂ©mentant taille.
Compléments
đ Processus â Lâinitialisation dâune liste doublement chaĂźnĂ©e affecte NULL Ă debut et fin et zĂ©ro Ă taille aprĂšs lâallocation de la structure.
⥠Une liste doublement chaßnée permet un affichage direct de debut vers fin et un affichage inverse de fin vers debut grùce à ses deux pointeurs de liaison.
Suivant et précédent
â Ă maĂźtriser
đ Processus â Lâempilement crĂ©e un maillon, place la donnĂ©e dans ce maillon, le relie Ă lâancien debut, actualise debut et incrĂ©mente taille.
đ Processus â Le dĂ©pilement retire le maillon pointĂ© par debut, avance debut vers le maillon suivant, rĂ©cupĂšre la donnĂ©e, libĂšre le maillon et dĂ©crĂ©mente taille, sauf si la pile est vide.
đ Processus â Lâenfilement crĂ©e un maillon et lâajoute Ă fin, en faisant aussi pointer debut vers ce maillon lorsque la file est vide, puis incrĂ©mente taille.
đ Processus â Le dĂ©filement retire le maillon pointĂ© par debut, avance debut, rĂ©cupĂšre sa donnĂ©e, libĂšre le maillon, dĂ©crĂ©mente taille et met fin Ă NULL si la file devient vide.
LIFO contre FIFO
â Ă maĂźtriser
đ Processus â Pour reconnaĂźtre un mot bien parenthĂ©sĂ©, on empile chaque parenthĂšse ouvrante et on dĂ©pile la parenthĂšse correspondante Ă chaque parenthĂšse fermante; le mot est acceptĂ© si la pile nâest jamais vide lors dâune fermeture et est vide Ă la fin.
đ Processus â LâĂ©valuation postfixĂ©e empile les valeurs et, pour chaque opĂ©rateur, dĂ©pile ses opĂ©randes, applique lâopĂ©ration dans lâordre appropriĂ©, puis empile le rĂ©sultat; la seule valeur restante est le rĂ©sultat final.
đ Processus â La conversion infixe-postfixĂ©e envoie directement les opĂ©randes dans la sortie, empile les opĂ©rateurs selon leur prĂ©cĂ©dence et dĂ©pile les opĂ©rateurs de prĂ©cĂ©dence supĂ©rieure ou Ă©gale avant dâempiler lâopĂ©rateur courant.
⥠La notation infixĂ©e place les opĂ©rateurs entre leurs opĂ©randes, la notation prĂ©fixĂ©e place lâopĂ©rateur avant ses opĂ©randes et la notation postfixĂ©e place lâopĂ©rateur aprĂšs ses opĂ©randes.
Compléments
Empiler pour analyser et calculer
â Ă maĂźtriser
⥠Dans un arbre, la racine nâa pas de pĂšre, une feuille nâa pas de fils et un nĆud interne possĂšde au moins un fils.
đ§ź Formule â La hauteur dâun arbre vide vaut 0 et celle dâun arbre non vide vaut 1 plus le maximum des hauteurs de ses sous-arbres gauche et droit.
⥠Un parcours en profondeur explore complĂštement une branche avant de passer Ă la suivante, tandis quâun parcours en largeur visite les nĆuds niveau par niveau.
Compléments
đ§ź Formule â Le nombre de nĆuds dâun arbre vide vaut 0 et celui dâun arbre non vide vaut 1 plus la somme des nombres de nĆuds de ses deux sous-arbres.
Racine, fils, feuilles
â Ă maĂźtriser
đ Processus â Le nombre de nĆuds dâun arbre vide vaut 0 ; sinon il vaut 1 plus la somme des nombres de nĆuds de ses sous-arbres gauche et droit.
đ Processus â Le nombre de feuilles dâun arbre vide vaut 0 ; celui dâun arbre dont la racine est une feuille vaut 1 ; sinon il est Ă©gal Ă la somme des nombres de feuilles de ses deux sous-arbres.
đ Processus â Le nombre de nĆuds internes dâun arbre vide ou dâun arbre rĂ©duit Ă une feuille vaut 0 ; sinon il vaut 1 plus la somme des nombres de nĆuds internes de ses sous-arbres.
Vide = 0 ; sinon on décompose en sous-arbres
â Ă maĂźtriser
đ Dans un parcours prĂ©fixe RGD, on traite la racine avant le fils gauche puis le fils droit.
đ Dans un parcours infixe GRD, on traite le fils gauche, puis la racine, puis le fils droit ; appliquĂ© Ă un arbre binaire de recherche, il fournit les valeurs dans lâordre croissant.
đ Dans un parcours postfixe GDR, on traite le fils gauche, puis le fils droit, puis la racine.
Compléments
đ Processus â La fonction DFS parcourt rĂ©cursivement un arbre non vide en plaçant le traitement de la racine avant lâappel gauche pour le prĂ©fixe, entre les appels gauche et droit pour lâinfixe, ou aprĂšs lâappel droit pour le postfixe.
RGD, GRD, GDR : la position de la racine change
â Ă maĂźtriser
đ Processus â La crĂ©ation dâun arbre Ă partir dâun Ă©lĂ©ment et de deux sous-arbres consiste Ă allouer un nĆud, Ă lui attribuer sa valeur et Ă placer les deux sous-arbres dans ses fils gauche et droit, puis Ă renvoyer un pointeur vers ce nĆud.
đ Processus â Lâinsertion simple cherche rĂ©cursivement un fils vide ; si lâarbre est vide, elle crĂ©e un arbre, si un fils est vide, elle y insĂšre le nouvel Ă©lĂ©ment, et sinon elle poursuit lâinsertion du cĂŽtĂ© choisi, par exemple Ă gauche.
đ Dans un arbre binaire de recherche contenant des entiers, les valeurs du sous-arbre gauche sont infĂ©rieures Ă la racine et celles du sous-arbre droit lui sont supĂ©rieures ou Ă©gales, les valeurs Ă©gales Ă©tant insĂ©rĂ©es Ă droite.
Compléments
đ Processus â Pour insĂ©rer une valeur dans un arbre binaire de recherche, on crĂ©e un nĆud si lâarbre est vide ; sinon on compare la valeur Ă la racine et on poursuit rĂ©cursivement Ă gauche si elle est plus petite, ou Ă droite dans le cas contraire.
Créer, puis insérer selon la structure choisie
â Ă maĂźtriser
đ Processus â Dans un arbre quelconque, la recherche renvoie 0 si lâarbre est vide, 1 si la racine contient la valeur cherchĂ©e, et sinon le rĂ©sultat logique de la recherche dans les sous-arbres gauche et droit.
đ Processus â Dans un arbre binaire de recherche, la recherche renvoie 0 pour un arbre vide, 1 si la racine contient la valeur cherchĂ©e, puis explore le sous-arbre gauche si la valeur cherchĂ©e est plus petite que la racine et le sous-arbre droit sinon.
đ Processus â La suppression complĂšte dâun arbre consiste Ă supprimer rĂ©cursivement le sous-arbre gauche, puis le sous-arbre droit, avant de libĂ©rer la racine ; elle correspond donc Ă un parcours postfixe.
⥠Dans un arbre quelconque, la recherche peut explorer les deux sous-arbres, tandis que dans un arbre binaire de recherche elle suit une seule branche grĂące Ă lâordre des valeurs.
Compléments
đ Dans le cours, la suppression dâun nĆud est limitĂ©e Ă la suppression dâune feuille, car supprimer un nĆud possĂ©dant des fils impose de rĂ©organiser ou de supprimer ses sous-arbres.
Recherche guidée ou exhaustive ; suppression des feuilles
| Dimension | Tableau | Liste chaßnée |
|---|---|---|
| AccĂšs | Direct au iá” Ă©lĂ©ment | SĂ©quentiel depuis la tĂȘte |
| MĂ©moire | ĂlĂ©ments contigus | Maillons dispersĂ©s possibles |
| Taille | FixĂ©e Ă lâavance | AdaptĂ©e au nombre dâĂ©lĂ©ments |
| Insertion et suppression | Peu flexibles | Réalisées par modification des pointeurs |
| Structure | Insertion | Suppression | Ordre |
|---|---|---|---|
| Pile | TĂȘte | TĂȘte | LIFO |
| File | Queue | TĂȘte | FIFO |
Test your knowledge on Listes, piles, files et arbres with 46 multiple-choice questions with detailed corrections.
1. Quel type dâadressage permet dâaccĂ©der au contenu dâune variable en utilisant le nom de cette variable ?
2. Dans un programme C, quâest-ce quâun pointeur contient prĂ©cisĂ©ment ?
Memorize the key concepts of Listes, piles, files et arbres with 91 interactive flashcards.
Qu'est-ce que lâadressage direct en programmation ?
AccĂ©der au contenu dâune variable par son nom.
Qu'est-ce qu'un pointeur en C ?
Une variable qui contient lâadresse dâune autre variable et est typĂ©e.
Que fait lâopĂ©rateur & en langage C ?
Il rĂ©cupĂšre lâadresse dâune variable.
Import your course and AI generates sheets, quizzes and flashcards in 30 seconds.
Sheet generator