Maison  >  Article  >  interface Web  >  JS empile l'introduction de DS&A

JS empile l'introduction de DS&A

WBOY
WBOYoriginal
2024-08-16 06:03:07939parcourir

Si vous utilisez un appareil moderne, vous avez probablement déjà rencontré des opérations de pile, même si vous ne vous en êtes pas rendu compte. Les piles sont fondamentales dans de nombreuses tâches de programmation, de la gestion des appels de fonction à l'activation des opérations d'annulation.

Que sont les piles ?

Les piles sont une structure de données linéaire qui suit l'ordre des opérations organisant les données dans une structure LIFO ou FILO.

LIFO : Dernier entré, premier sorti.

FILO : Premier entré, dernier sorti.

Les piles sont utilisées pour effectuer des opérations sur une collection d'éléments telles que l'ajout et la suppression d'éléments, l'affichage des éléments supérieurs et l'affichage si la collection est vide ou pleine.

Par exemple :

Lorsque vous êtes actuellement sur votre navigateur Web en train de visiter www.ESPN.com et que vous cliquez accidentellement sur une annonce pour des billets de baseball des Chicago White Sox. Nous avons ajouté à notre stack, peut-être pas intentionnellement, mais maintenant il se trouve en haut de notre stack. On se rend alors compte que les White Sox de Chicago ont perdu 15 matchs de suite. Eh bien... appuyons sur ce bouton de retour (en supprimant cet élément du haut de la pile).

JS stacks DS&A intro

Oui, celui-là juste là-haut. Cela démontre le principe LIFO dans les opérations de stacks, nous quittons (supprimons) la dernière page visitée de notre historique (ou Stacks) pour revenir sur www.ESPN.com... peut-être celui des White Sox l'année prochaine.

Les opérations sur les piles sont souvent utilisées dans les applications qui doivent conserver l'historique du navigateur Web, annuler et refaire sur les éditeurs de texte et les piles d'appels de fonction, pour n'en nommer que quelques-uns.

Les fonctions couramment utilisées lors de la modification des piles sont les suivantes :

.Push = pour ajouter un élément sur une pile.

.pop = pour supprimer l'élément supérieur d'une pile.

.peek = pour afficher l'élément supérieur d'une pile.

.length/.size = pour déterminer le total des index dans une pile. Javascript utilise (.length)

.isEmpty = vérifie si une pile est vide.

.isFull = vérifie si une pile est pleine ; si le tableau a une taille fixe.

La structure de données Stacks peut être créée avec une classe stacks ou avec un tableau régulier.

Implémentation de piles sans classe :

Lorsque nous effectuons des opérations de pile sans classe de piles, nous simulons les opérations de pile avec un tableau.

Vous trouverez ci-dessous un exemple d'utilisation des opérations de piles pour inverser un tableau de nombres. J'utiliserai JSON.stringify pour comparer les valeurs du résultat du tableau au résultat du tableau souhaité.

Ex :

// Reverse an array using stack operations

let number = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; // original array
let numberList = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]; // reversed array
let ordernumberList = []; // array to store the reversed order

// Loop through the numberList array to reverse its order
for (var i = 0; i < number.length; i++) {
  let currentValue = numberList.pop(); // using the key .pop method to remove the last element from numberList
  ordernumberList.push(currentValue); // using the key .push method to push the popped element into ordernumberList
}

console.log(ordernumberList + " vs " + number); // compare the arrays

// Convert both arrays into JSON strings for comparison
if (JSON.stringify(ordernumberList) === JSON.stringify(number)) {
  console.log("The number list is reversed: " + ordernumberList);
  return ordernumberList;
} else {
  console.log("The number list is not reversed: " + ordernumberList);
}

Je souhaite souligner la déclaration if-else à la toute fin. J'ai utilisé la méthode JSON.stringify pour comparer les deux tableaux car, sans elle, la comparaison renverrait false, déclenchant la condition else, même si les tableaux ont un contenu identique. Cela se produit parce que, lors de la comparaison de tableaux en JavaScript, la comparaison vérifie leurs références (c'est-à-dire leurs emplacements mémoire) plutôt que le contenu réel à l'intérieur des tableaux.

Comme nous pouvons le voir tout au long de la boucle for, notre méthode .pop (supprimé) en premier le dernier index du tableau numberList (LIFO). Ensuite, utilisez la méthode .push pour l'ajouter dans le nouveau tableau ordernumberList, en inversant le tableau d'origine.

FILO arrive sur le nouveau tableau formulé car les premiers index poussés dans le tableau ordernumberList seront les derniers à sortir (FILO) s'ils sont jamais modifiés avec les opérations de piles.

Dans cet article, nous avons exploré le fonctionnement des piles en utilisant les principes LIFO et FILO, et implémenté les opérations de pile en JavaScript. Comprendre les piles est essentiel pour de nombreuses tâches de programmation, comme le montrent des scénarios réels comme la navigation sur le Web.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn