8 structures de données communes que chaque programmeur doit connaître

Informations Yunqi: [ Cliquez pour voir plus d'informations sur l'industrie ]
Ici vous pouvez trouver des informations de première main sur Shangyun dans différentes industries, qu'attendez-vous, venez bientôt!

La structure des données est une façon spéciale d'organiser et de stocker des données, ce qui nous permet d'effectuer des opérations sur les données stockées plus efficacement. Les structures de données ont une grande variété d'utilisations en informatique et en génie logiciel.

1826B3D4_0FA5_4049_B4C2_CC8725898B5C

Presque tous les programmes ou systèmes logiciels développés utilisent des structures de données. De plus, la structure des données appartient aux fondements de l'informatique et du génie logiciel. Il s'agit d'un sujet clé pour les questions d'entrevue en génie logiciel. Par conséquent, en tant que développeurs, nous devons avoir une compréhension complète de la structure des données.

Dans cet article, je vais expliquer brièvement les 8 structures de données communes que chaque programmeur doit connaître.

1. Tableau

Les tableaux sont des structures de taille fixe qui peuvent contenir des éléments du même type de données. Il peut s'agir d'un tableau d'entiers, d'un tableau de nombres à virgule flottante, d'un tableau de chaînes ou même d'un tableau de tableaux (comme un tableau à deux dimensions). Le tableau est indexé, ce qui signifie qu'un accès aléatoire est possible.

E1A184FD_A4D0_415d_B2C1_0682D67CD81D

Fonctionnement de la baie

  • Traversal: Parcourez tous les éléments et imprimez.
  • Insérer: insérez un ou plusieurs éléments dans le tableau.
  • Supprimer: supprimer des éléments du tableau
  • Rechercher: rechercher des éléments dans le tableau. Vous pouvez rechercher des éléments par leur valeur ou leur index
  • Mettre à jour: mettre à jour la valeur d'un élément existant à un index donné

Application de tableau

  • Utilisé comme base pour construire d'autres structures de données, telles que des listes de tableaux, des tas, des tables de hachage, des vecteurs et des matrices
  • Utilisé pour différents algorithmes de tri, tels que le tri par insertion, le tri rapide, le tri à bulles et le tri par fusion.

2. Liste liée

Une liste chaînée est une structure séquentielle constituée d'une séquence d'éléments séquentiels linéaires liés les uns aux autres. Par conséquent, vous devez accéder aux données de manière séquentielle et un accès aléatoire n'est pas possible. Les listes liées fournissent une représentation simple et flexible des ensembles dynamiques.

Examinons les termes suivants liés aux listes chaînées. Vous pouvez vous faire une idée claire en vous référant à la figure 2.

  • Les éléments de la liste chaînée sont appelés nœuds.
  • Chaque nœud contient une clé et un pointeur sur son nœud successeur (appelé suivant).
  • L'attribut nommé head pointe vers le premier élément de la liste chaînée.
  • Le dernier élément de la liste chaînée est appelé la queue.

60167FAC_B2FF_4ab9_B8BB_0D329E6FB225

Voici les différents types de listes chaînées disponibles.

  • La liste à chaîne unique ne peut parcourir les éléments que vers l'avant.
  • Double liste liée - peut parcourir les éléments dans les directions avant et arrière. Le nœud se compose d'un pointeur supplémentaire appelé le précédent, qui pointe vers le nœud précédent.
  • Liste de liens circulaires - une liste de liens où le pointeur précédent vers la tête pointe vers la queue et le pointeur suivant vers la tête pointe vers la tête.

Opération de liste liée

  • Recherche: recherchez le premier élément avec la clé k dans une liste chaînée donnée par une recherche linéaire simple et renvoyez un pointeur sur cet élément
  • Insérer: insérez une clé dans la liste chaînée. L'insertion peut se faire de 3 manières différentes: insérer au début de la liste, insérer à la fin de la liste, puis insérer au milieu de la liste.
  • Supprimer: supprimer l'élément x de la liste chaînée donnée. Vous ne pouvez pas supprimer un nœud en une seule étape. La suppression peut être effectuée de 3 manières différentes: supprimer depuis le début de la liste, supprimer depuis la fin de la liste, puis supprimer depuis le milieu de la liste.

Application de la liste chaînée

  • Utilisé pour la gestion de la table des symboles dans la conception du compilateur.
  • Utilisé pour basculer entre les programmes qui utilisent Alt Tab (implémenté à l'aide d'une liste liée circulaire).

3. Empiler

La pile est une structure LIFO (dernier entré premier sorti - le dernier élément placé est accessible en premier), qui se trouve généralement dans de nombreux langages de programmation. Cette structure est appelée "pile" car elle est similaire à une pile de cartes empilées du monde réel.

Opération de pile

Voici deux opérations de base qui peuvent être effectuées sur la pile. Veuillez vous référer à la figure 3 pour mieux comprendre le fonctionnement de la pile.

  • Push: Poussez un élément en haut de la pile.
  • Pop Pop: supprimez l'élément supérieur et revenez.

3055A28C_072A_4abe_A939_6CB7CFBFCBE8

De plus, les fonctions supplémentaires suivantes sont fournies pour que la pile vérifie son état.

  • Peep: Retournez à l'élément supérieur de la pile sans le supprimer.
  • isEmpty: Vérifiez si la pile est vide.
  • isFull: Vérifiez si la pile est pleine.

Application de pile

  • Utilisé pour l'évaluation des expressions (par exemple: algorithme de yard pour analyser et évaluer les expressions mathématiques).
  • Utilisé pour implémenter des appels de fonction dans la programmation récursive.

4. File d'attente

La file d'attente est une structure FIFO (premier entré, premier sorti, l'élément placé en premier peut être consulté en premier), qui se trouve généralement dans de nombreux langages de programmation. Cette structure est appelée "file d'attente" car elle est similaire à une file d'attente dans le monde réel - les gens attendent dans la file d'attente.

Opération de file d'attente

Les deux opérations de base pouvant être effectuées sur la file d'attente sont présentées ci-dessous. Veuillez vous référer à la figure 4 pour mieux comprendre le fonctionnement de la pile.

  • En file d'attente: insérez l'élément à la fin de la file d'attente.
  • Dequeue: supprime les éléments du début de la file d'attente.

0E133E1E_26B5_40e8_9430_9E777F80183D

Application de file d'attente

  • Utilisé pour gérer les threads dans plusieurs threads.
  • Utilisé pour implémenter un système de file d'attente (par exemple file d'attente prioritaire).

5. Table de hachage

Une table de hachage est une structure de données utilisée pour stocker la valeur d'une clé associée à chaque clé. De plus, si nous connaissons la clé associée à la valeur, elle prend en charge efficacement la recherche. Par conséquent, quelle que soit la taille des données, l'insertion et la recherche sont très efficaces.

Lorsqu'il est stocké dans une table, l'adressage direct utilise un mappage un à un entre les valeurs et les clés. Cependant, cette méthode a des problèmes lorsqu'il existe un grand nombre de paires clé-valeur. La table comportera de nombreux enregistrements et est très volumineuse. Compte tenu de la mémoire disponible sur un ordinateur classique, la table peut être impossible, voire impossible à stocker. Pour éviter ce problème, nous utilisons des tables de hachage.

Fonction de hachage

Une fonction spéciale appelée fonction de hachage (h) est utilisée pour surmonter les problèmes ci-dessus dans l'adressage direct.

En accès direct, la valeur avec la clé k est stockée dans l'emplacement k. En utilisant la fonction de hachage, nous pouvons calculer l'indice de la table (slot) vers laquelle chaque valeur pointe. La valeur calculée à l'aide de la fonction de hachage de la clé donnée est appelée la valeur de hachage, qui représente l'indice de la table à laquelle la valeur est mappée.

  • h: fonction de hachage
  • k: la clé dont la valeur de hachage doit être déterminée
  • m: la taille de la table de hachage (nombre d'emplacements disponibles). Un nombre premier qui n'est pas proche d'une puissance exacte de 2 est un bon choix pour m.

E9047EBD_6D35_4cb6_A216_687141B326A5

À partir des deux derniers exemples donnés ci-dessus, nous pouvons voir que lorsque la fonction de hachage génère le même index pour plusieurs clés, des conflits se produisent. Nous pouvons résoudre le conflit en choisissant la fonction de hachage appropriée h et en utilisant des techniques telles que la liaison et l'adressage ouvert.

Application de table de hachage

  • Utilisé pour implémenter des index de base de données.
  • Utilisé pour implémenter des tableaux associatifs.
  • Utilisé pour implémenter des structures de données "set".

6. Arbre

Un arbre est une structure hiérarchique dans laquelle les données sont organisées en couches et liées entre elles. Cette structure est différente de la liste liée, où les éléments sont liés dans un ordre linéaire.

Au cours des dernières décennies, divers types d'arbres ont été développés pour s'adapter à certaines applications et respecter certaines restrictions. Quelques exemples sont les arbres de recherche binaire, les arbres B, les arbres rouge-noir, les arbres étendus, les arbres AVL et les arbres n-aires.

Arbre de recherche binaire

Comme son nom l'indique, un arbre de recherche binaire (BST) est un arbre binaire dans lequel les données sont organisées selon une structure hiérarchique. Cette structure de données stocke les valeurs dans un ordre trié, et nous étudierons ces valeurs en détail dans ce cours.

Chaque nœud de l'arborescence de recherche binaire contient les attributs suivants.

  • clé: valeur stockée dans le nœud.
  • gauche: pointeur vers l'enfant gauche.
  • Droite: pointeur vers le bon enfant.
  • p: pointeur vers le nœud parent.
    Les arbres de recherche binaire ont des attributs uniques qui les distinguent des autres arbres. Cet attribut est appelé l'attribut d'arbre de recherche binaire.

Soit x un nœud dans l'arbre de recherche binaire.

  • Si y est un nœud dans le sous-arbre gauche de x, alors y.key≤x.key
  • Si y est un nœud dans le sous-arbre droit de x, alors y.key≥x.key

BA848ABC_4916_4f8e_A120_F1EFFDEB0CFA

Application d'arbre

  • Arbre binaire: utilisé pour implémenter l'analyseur d'expression et le solveur d'expression.
  • Arbre de recherche binaire: utilisé dans de nombreuses applications de recherche qui saisissent et sortent en continu des données.
  • Tas: utilisé par la JVM (Java Virtual Machine) pour stocker des objets Java.
  • Piège: utilisé pour les réseaux sans fil.

7. Tas

Le tas est un cas particulier d'arbre binaire, dans lequel les valeurs du nœud parent et de ses nœuds enfants sont comparées et organisées en conséquence.
Voyons comment représenter le tas. Les tas peuvent être représentés à l'aide d'arbres et de tableaux. Les figures 7 et 8 montrent comment nous utilisons des arbres et des tableaux binaires pour représenter des tas binaires.

01D40240_D0D3_4f49_885A_5E6C6647E225

Le tas peut avoir 2 types.

  • Tas minimum - La clé du parent est inférieure ou égale à la clé de l'enfant. Cela s'appelle l'attribut min-heap. La racine contiendra la valeur minimale du tas.
  • Nombre maximum de tas - La clé du parent est supérieure ou égale à la clé de l'enfant. Cela s'appelle l'attribut max-heap. La racine contiendra la valeur maximale du tas.

Application de tas

  • Utilisé pour implémenter des files d'attente prioritaires, car les valeurs de priorité peuvent être triées en fonction des attributs de tas.
  • Vous pouvez utiliser le tas en temps O (log n) pour implémenter la fonction de file d'attente.
  • Utilisé pour trouver les k valeurs les plus petites (ou les plus grandes) dans un tableau donné.
  • Utilisé pour les algorithmes de tri de tas.

8. Image

Un graphique se compose d'un ensemble limité de sommets ou de nœuds et d'un ensemble d'arêtes reliant ces sommets.
L'ordre du graphique est le nombre de sommets dans le graphique. La taille du graphique est le nombre d'arêtes dans le graphique.
Si deux nœuds sont connectés l'un à l'autre par le même bord, ils sont appelés nœuds adjacents.

Graphique dirigé

Si toutes les arêtes du graphique G ont des directions indiquant quel est le sommet de départ et quel est le sommet de fin, le graphique est appelé un graphique dirigé.
Nous disons que (u, v) entre ou sort du sommet u du sommet u, puis entre ou entre le sommet v.
Auto-boucle: du sommet à son propre bord.

Graphique non orienté

Si toutes les arêtes du graphe G n'ont pas de direction, cela s'appelle un graphe non orienté. Il peut s'étendre entre deux sommets de deux manières.
Si le sommet n'est connecté à aucun autre nœud du graphe, le sommet est dit isolé.

47701E44_A860_436c_9A3F_2B6662BDFBF0

Application du graphique

  • Utilisé pour représenter les réseaux de médias sociaux. Chaque utilisateur est un sommet et une arête est créée lorsque l'utilisateur se connecte.
  • Utilisé pour représenter les pages Web et les liens des moteurs de recherche. Les pages Web sur Internet sont liées les unes aux autres par des hyperliens. Chaque page est un sommet et l'hyperlien entre les deux pages est un bord. Utilisé pour classer les pages dans Google.
  • Utilisé pour représenter l'emplacement et l'itinéraire dans le GPS. L'emplacement est le sommet et l'itinéraire reliant les emplacements est le bord. Utilisé pour calculer le chemin le plus court entre deux emplacements.

[Salle de classe en ligne Yunqi] Chaque jour, les experts en technologie des produits partagent!
Adresse du cours: https://yqh.aliyun.com/zhibo

Rejoignez la communauté maintenant, en face à face avec des experts et restez au courant des derniers développements du cours!
Community Communauté Yunqi Online Classroom】https://c.tb.cn/F3.Z8gvnK

Si vous constatez qu'il y a suspicion de plagiat dans cette communauté, veuillez envoyer un e-mail à: [email protected] pour signaler et fournir des preuves pertinentes. Une fois vérifiée, la communauté supprimera immédiatement le contenu soupçonné de contrefaçon.

Lien d'origine
Cet article est le contenu original de la communauté Yunqi et ne peut être reproduit sans autorisation.

Publié 2315 articles originaux · 2062 pouces vers le haut · 1,58 million de vues

Je suppose que tu aimes

Origine blog.csdn.net/yunqiinsight/article/details/105398378
conseillé
Classement