Transcription
1. Introduction: Bonjour et bienvenue dans une nouvelle classe. Nous avons déjà couvert les concepts de base de Java et de programmation en général. Et dans cette classe, nous parlons de la structure des données. Donc, tout d'abord, nous définissons une structure de données. Quels types de structure de données nous avons dans la programmation, comment les créer et les utiliser. Et il se concentrera sur les structures de données linéaires telles que les piles, les files d'attente et LinkedList. Et nous avons déjà parlé de tableaux et de les utiliser dans les classes précédentes. Donc, nous nous concentrerions principalement sur la pile cuz LinkedList. Donc, dans la pile, allez apprendre à créer un stat nous-mêmes et comment utiliser la pile Java intégrée, comment utiliser la pile basée sur la liste liée. Ensuite, nous continuerons avec une file d'attente. On fait la même chose avec la file d'attente. Et puis, enfin, créez notre liste unique et doublement liée pour vous voir dans la prochaine vidéo.
2. Structure de données: Dans cette vidéo, nous allons parler des structures de données. Et la structure de données est un format spécialisé pour l'organisation, le traitement, récupération et le stockage des données, où il existe plusieurs types structurels de base et avancés. Toute structure de données est conçue pour organiser les données en fonction d'un objectif spécifique afin qu'elles puissent être consultées et travaillées de manière appropriée. Comme vous pouvez le voir ici, nous avons deux types de structure de données. Nous avons le linéaire et le non-linéaire. Par exemple, array est un, est un exemple d'une structure de données linéaire, et nous l'avons utilisé tant de fois dans les classes précédentes. Nous avons également des listes de pile et de liens. Dans la LinkedList, nous avons des listes simples et doubles liées. Et le type non linéaire, nous avons des graphiques et des arbres. Donc, dans ce cours, nous allons apprendre comment et quand nous devrions utiliser chacun d'eux. Et comment peuvent-ils nous aider ? Et quels sont les avantages ? Pour vous voir dans la prochaine vidéo.
3. Stack basé sur le tableau: Une pile est une structure de données linéaire qui suit un ordre particulier dans lequel les opérations sont effectuées. Il y a beaucoup d'exemples réels d'une pile. Par exemple, les lectures qui sont empilées les unes sur les autres afin qu'elles soient mises à jour, qui
est en haut, sont les premières à être supprimées. Et la plaque qui a été placée à la position la plus basse, reste dans la pile pendant la plus longue période de temps. Ici, par exemple, nous avons notre pile vide et nous avons poussé, par
exemple, le numéro un, puis nous l'avons poussé dans le numéro deux, puis trois. Donc, nous avons 123. Maintenant, si nous voulons sortir un élément, prendra trois, qui est le dernier élément, le entré. Donc peut être simplement vu pour suivre l'ordre lifo qui est le dernier dans, premier sorti. Donc, ici, nous avons deux opérations principales, le push et le pop. Maintenant, nous avons une classe de pile en Java, mais nous ne l'utilisons pas dans cette vidéo. Nous allons simplement mettre en œuvre les méthodes par nous-mêmes. Et pour implémenter la pile, nous avons utilisé un tableau. Alors allons de l'avant et utilisons array pour implémenter notre pile. Allons de l'avant et créons un nouveau projet. Donnons-le un nom. Et ce nom du paquet comme une phase. Et, et ce paquet va créer. C' est donc notre pile de tableau de classe. Et créons une interface et nommez-la pile. Donc ici, nous avons une interface, et ici nous aurons toutes les méthodes. Donc c'est notre interface. Et donc tout d'abord, nous avons, comme vous l'avez dit, la méthode push and pop. Donc il y aura un vide public, et on poussera un objet. Il peut s'agir d'entiers, une chaîne, d'un caractère, et ainsi de suite. Et une autre méthode qui est et popping un objet. Et créons d'autres méthodes. Donc, au lieu de popping, popping un élément, et quand nous lançons un élément, nous le déplacons de la pile. Cependant, si nous, nous voulons juste jeter un oeil à cet élément, nous devons créer une autre méthode et nous allons le nommer. Donc, nous avons juste un coup d'oeil à cet objet en utilisant cette méthode supérieure. Et allons de l'avant et créons une autre méthode. Par exemple, la taille pour vérifier la taille de la pile et le SMD. Il est vide. Et pour vérifier si la pile est vide ou non, elle retournera un vrai booléen si elle est vide et false sinon. Donc, ici, nous avons nos méthodes. Maintenant. Nous avons un problème ici. Parce que chaque fois que nous voulons pousser et réutiliser le tableau, donc si nous voulons pousser, le tableau est plein, nous avons une limite sur le tableau. Et par exemple, disons que la zone est de taille quatre. Et nous sommes déjà poussés pour des éléments. Et on a essayé de pousser le cinquième. Alors on aura une moyenne ici. Puisque le tableau est limité et que nous ne pouvons pas pousser cinq éléments dans un quatre éléments à un. Et bien sûr, si vous voulez pop un élément et que la pile est vide, alors n' aura pas, n'aura pas d'élément à afficher à partir du haut méthode. Donc, pour corriger cela, nous devons créer notre propre classe d'exception. Alors allons de l'avant et créons notre exception. Nommez-le exception de pile. Et comme d'habitude, nous allons juste créer notre exception publique constructeur. Et nous prendrons un message à cordes et tirons le souper. Et bien sûr, nous allons lancer étendre, désolé, la classe d'exception pour l'utiliser dans cette classe. Donc maintenant, nous avons fini avec cette exception Stark. Revenons en arrière et nous devons jeter cette statique cette exception. Donc jette exception. Et la même chose. Autres méthodes qui font exception. Et maintenant, c'est notre méthode. Donc, ici, nous avons une erreur lancements. Maintenant, revenons à la classe de pile basée sur le tableau et implémentons cette méthode créée plus tôt ici. Donc, tout d'abord, nous devons étendre ou implémenter l'interface de pile. Parce que chaque fois que nous voulons utiliser une interface, nous devons ajouter ici des impléments et nous allons implémenter l'interface de pile. Et bien sûr, nous avons une erreur en disant que nous
avons hérité des méthodes abstraites et que nous devons implémenter. Alors allons-y et toutes les méthodes, et ce sont nos méthodes. Donc, commençons par le premier de tout, nous devons créer le constructeur, bien sûr. donc tout d'abord, nous avons aujourd'hui, et ce pourrait être une chaîne entière, un caractère, double n'importe quoi. Donc, nous allons lui donner la valeur de l'objet et nous allons le nommer. Et bien sûr, nous avons notre entier inférieur à m. Et donc ce serait là que nous allons bouger. Maintenant, créons notre constructeur. Et le constructeur de la base. Donc, c'est le constructeur et il faudra la capacité du tableau ou de la pile si vous le souhaitez. Et bien sûr, nous allons instancier l'objet à un avec la valeur de capacité. Et nous avons toujours le top. Donc, au début, disons que tau est égal à minus1, et nous verrons pourquoi dans une minute. Donc top est égal à minus1, et ici nous avons public. Donc c'est notre constructeur. Maintenant, passons à notre méthode est vide. Donc, si par exemple, si top est égal à minus1, retournez true, c'est vide, sinon, retournez false. Donc, si top est égal à moins un, c'est à la condition initiale ou nous n'avons rien et la pile retourne juste true, sinon retourne false. Maintenant, nous avons un raccourci pour ça. Donc, au lieu de dire retour, sinon, retour, nous pouvons simplement dire que le retour est égal à moins un. Donc, cette déclaration, top est égal à moins un. Il vérifiera si top est égal à minus1 retournera automatiquement un booléen. Et retourner un booléen ici entraînerait le retour d'une méthode booléenne. Donc, si le sommet est égal à moins un, il retournera vrai. Sinon, il retournera false. Maintenant, nous avons toujours la taille qui est facile. Donc l'année va simplement retourner ce que nous avons ici, un top plus un. Donc, au début, nous avons top est égal à moins un. Donc, chaque fois que nous avons besoin de connaître la taille, nous en ajoutons simplement un au sommet. Donc ici, nous avons moins un plus un égal à 0. Donc, la condition initiale de la pile est de taille 0. Maintenant, passons à notre méthode push. Donc nous avons notre buisson. Et ici, tout d'abord, nous devons vérifier si la pile est pleine, alors nous ne pouvons pas ajouter d'autres éléments. Donc, tout d'abord, nous devons définir la taille. Est égal à array.length. Donc, chaque fois que nous avons la taille qui est top plus un est égal à array.length que nous devons jeter notre exception ici. Lancez une exception. Cette exception avec un message de méthode. Il dit que SQL. Si ce n'est pas le cas, nous continuerons normalement. Donc, ce que nous allons faire est d'abord incrémenter, puisque nous avons ajouté un élément mis en place, pas moin1 plus, il est égal à plus un, ce qui est égal à 0. Donc maintenant, si nous voulons utiliser la taille, nous obtenons top plus 10 plus 11. Et c'est le nombre d'éléments que nous avons dans la pile en ce moment si nous utilisons la méthode push. Donc maintenant, après avoir incrémenté haut, nous devons entendre le tableau à la valeur de l'objet que nous avons entré ici. Et maintenant, nous avons fini avec notre méthode push. Allons à notre quai. Ici. Tout d'abord, nous devons vérifier si notre pile est vide, alors nous n'avons aucun élément à montrer. Si c'est vide. Puis lancez cette exception. Exception et disant que la pile est vide. Maintenant, si ce n'est pas le cas, alors notre élément juste ajouter la tasse d'index. Maintenant, passons à notre méthode finale. Et la méthode que nous devons vérifier si elle est vide. Si la pile est vide, nous devons lancer une exception, en disant cela. Et sinon, nous devons retourner cet objet. Tout ce qu'on a au sommet. Ici. Par exemple, si nous utilisons pop ici, alors nous devons retourner cet objet et le déplacer de la pile. Cependant, si vous utilisez stop, alors nous allons juste jeter un oeil à cet objet qui est égal à trois sans le supprimer de la pile. Alors revenons en arrière. Et ici, tout d'abord, créons un objet ClassName et à retourner. Donc c'est l'objet que nous allons retourner, et c'est. Maintenant, nous commençons l'objet ici et cette variable à retourner. Et nous devons supprimer cet élément, donc nous lui donnons simplement une valeur de null. Et maintenant nous ne le faisons pas, nous avons enlevé un élément, donc nous devons le décrémenter. Donc, par exemple, si nous avons trois éléments et que nous utilisons la méthode pop, alors décrémentera notre top variable de trois à deux à un. Donc, nous allons simplement décrémenter d'un top moins moins et renvoyer cet objet et cette variable ici. Donc, ce que nous obtenons ici, c'est que nous créons
notre interface, notre exception, et notre classe, que nous avons, toutes nos méthodes. Donc, dans la vidéo suivante, nous allons créer notre classe de pilotes et y utiliser ces méthodes.
4. Application de l'empilement: Alors maintenant que nous avons toutes nos méthodes, créons notre classe de pilotes. Donc, c'est notre chauffeur. Et je ferais méthode principale. Bien sûr, vous allez lancer une exception de pile. Ou nous pouvons dire des exceptions, puisque l'exception de pile est une sous-classe de la classe d'exception. Et tout d'abord, nous devons créer notre à un nom S de pile de base à la place, une pile avec une capacité de port, par exemple. Maintenant, la première chose que nous allons faire est d'ajouter un élément à cela, donc nous utilisons la pile, le Bush. Ajoutons un autre et empilons le push pour empiler les trois. Donc, nous allons faire comme cet exemple. Donc, tout d'abord, nous avons une pile vide. Ensuite, nous avons poussé trois éléments. Maintenant, quoi ? Cela va se produire ici, quand nous exécutons ce code, allons à notre pile basée sur la baie. Nous allons utiliser cette méthode trois fois. Donc, tout d'abord, nous avons le sommet est initialement égal à moins un. Quand on a poussé le numéro un. Ce qui se passe ici est, tout d'abord, il devrait vérifier la taille de cette taille est égale à array.length. Maintenant, le array.length est la capacité ici. Donc, cette capacité et la classe de pilote ici est le array.length. Maintenant, le array.length ici est égal à quatre. Donc c'est un PE, puisque la taille est égale à plus un et top est égal à minus1. Et d'abord donc taille égale à 0 puisque nous n'
avons aucun élément et 0 n'est pas égal à quatre. Donc, nous ne allons pas lancer l'exception de la pile. Alors maintenant, nous allons incrémenter le sommet. Maintenant, DOB est égal à 0. Et dans ce cas, nous allons ajouter cet élément, qui est un. Nous allons l'ajouter à un,
à la position 0, à la position 0, puisque nous l'incrémentons ici. Maintenant, la même chose. Nous allons faire la même chose deux fois de plus pour l'objet 23, pour les entiers 23. Donc, et nous allons vérifier si la taille. Maintenant, la taille est égale à un. Puisque la taille est égale à plus un et top est égal à 0. Donc la taille est égale à 0 plus un. Et bien sûr, ce n'est pas égal à quatre, n'
est pas égal à la longueur. Donc, la pile n'est pas encore pleine, et nous l'incrémentons une fois de plus et nous la stockerons
à, à une position un, puis vous élément, puis à la position du tableau à la deuxième, le troisième élément. Laisse-moi vérifier les côtés ici. Donc, nous imprimons la taille de la pile. Et après l'ajout, cet élément ira. On va vérifier la taille, la taille. Et enfin, nous allons le vérifier après avoir ajouté le troisième élément. Alors allons de l'avant et exécutons ce code. Voyez ce qui va se passer. Donc, tout d'abord, nous avons cette taille égale à 123. Et laissez-moi utiliser la méthode pile est vide. Donc, ici, la pile est vide, elle devrait retourner true. Donc, la pile est vide. Maintenant, si nous l'utilisons, par exemple, ici, la pile est vide. Il devrait retourner faux. Puisque la pile n'est pas vide, nous avons trois éléments dans la pile. Maintenant, nous avons aussi la pile, le haut. Ici. Nous avons trois éléments. Donc, si nous utilisons la pile en haut, cela nous donnera cette valeur sans l'enlever. Alors utilisons-le ici. Nous disons élément supérieur. Ainsi, ces données. Et lançons le code qui nous donnera l'élément supérieur est égal à trois. Maintenant, nous allons utiliser la
pop, pop, et cela nous donnera aussi trois. Cependant, si nous utilisons la pile, la méthode supérieure, encore ici, maintenant que nous supprimons l'élément trois n'obtiendrons pas trois. Nous en aurons deux maintenant, puisque nous déplaçons cet élément, maintenant, le nouvel élément en position supérieure est l'élément deux. Donc, ce sont toutes les méthodes que nous avons implémentées dans la classe de pile basée sur la baie et l'interface bien sûr. Donc c'est tout pour cette vidéo. se voit dans la prochaine.
5. Problème de correspondance des symboles: Démontrons l'utilisation de la pile. Donc, nous allons faire un exemple. Considérons cette balise. Donc, ici, nous avons notre pile, et faisons un exemple sur la correspondance des symboles. Donc, notre programme devrait renvoyer soit que l'expression est valide ou non. Ainsi, par exemple, ce sont les symboles d'ouverture, et ce sont les symboles de fermeture. Maintenant, laissez-moi écrire comme ça. Ici, nous avons nos trois symboles. Et permettez-moi d'écrire ici quelques exemples. Par exemple, si nous disons Etch. Donc notre programme devrait revenir vrai ici, puisque ce symbole d'ouverture a un symbole de fermeture. Cependant, si nous, par exemple, disons bord, et laissez-moi en placer un ici. Ce symbole d'ouverture n'a donc pas de symbole de fermeture avant d'en ouvrir un nouveau. Donc, nous avons ceci. Et pour être une expression valide, nous devrions en ajouter une ici et vous avez déplacé ceci. Maintenant, chaque symbole d'ouverture est suivi d'un symbole de fermeture. Et bien sûr, nous pouvons ajouter ce que vous voulez. Et c'est donc un sens valable. Chaque symbole d'ouverture est suivi d'une fermeture. Donc, ce que nous allons faire est d'accepter une expression et ensuite stocker chaque ouverture, chaque symbole d'ouverture dans la pile. Supposons que nous ayons cette expression. D' accord ? Donc nous avons, par exemple, a, B, C, et D. Laissez-moi cliquer à 20. C' est donc notre expression et passera par cette expression un par o. donc a ne correspond à aucun de ces symboles d'ouverture. Donc nous allons l'ignorer et aller à ces crochets bouclés. Et ça correspond à celui-ci. Donc nous l'avons stocké dans la pile. Donc, ici, nous avons, maintenant ce crochets bouclés. Ensuite, nous allons à B. Nous n'avons pas à B ne correspond à aucun de ces symboles, aucun de ces symboles, va l'ignorer et aller à celui-ci. Celle-ci ne correspond pas non plus à l'une de ces ouvertures, mais elle correspond à celle de fermeture. Donc ici, nous avons ce match le mieux. Et bien sûr, nous allons mettre cet élément dans la pile, comparer avec celui-ci. S' ils sont égaux, alors nous continuerons dans notre expression. Sinon, nous allons retourner faux. L' expression n'est pas valide. Donc on va faire la même chose ici. On a ces fantasmes et je vais les comparer. Celui-ci. On va le mettre dans la pile et le comparer à celle-ci. Et enfin, nous avons les crochets aussi. Maintenant, nous pourrions avoir aussi, par
exemple, quelque chose comme ça. Donc ce qui va se passer ici est laissez-moi, laissez-moi supprimer est. C' est donc notre expression. Et tout d'abord, je vais regarder ça. C' est un symbole d'ouverture, donc va le placer ici. Et puis nous allons regarder le deuxième élément. Nous avons des crochets. Donc c'est un symbole d'ouverture aussi, et nous allons le stocker dans la pile. Donc on va le pousser. Donc, ces fantasmes vont descendre ici et les crochets ici. Maintenant, nous allons vérifier le troisième élément, ce dernier, nous allons le comparer avec l'élément supérieur de la pile. Donc, ici, nous avons un crochets de fermeture et un crochets d'ouverture, le match. Donc on va juste sortir celle-là d'ici. Et nous allons continuer ici. Et bien sûr, nous allons mettre les parenthèses ici. Maintenant, après cela, nous allons comparer ce symbole d'ouverture avec le dernier élément ici. Et bien sûr l'image, alors notre expression est valide, sinon elle serait invalide. Donc, c'est une idée rapide à propos de ce problème, et commençons par écrire du code R. Donc, ici, nous avons notre pile basée sur la baie. Créons une nouvelle classe et le nom et la correspondance des symboles. Et maintenant classe, bien sûr, nous avons notre méthode principale et nous allons créer une méthode qui renvoie un vrai booléen si l'expression est valide, sinon elle retournera false. Donc, ce serait un booléen statique privé. Nommez-le, validez-le, et il acceptera une expression comme une forme de chaîne. Maintenant, tout d'abord, nous allons commencer par la boucle Y. Et nous verrons ce que nous allons mettre comme condition ici. Maintenant, créons notre pile basée sur la baie et avec le périmètre d'expression cette longueur. Ainsi, le nombre maximal d'éléments qui peuvent être stockés dans la pile est le nombre maximal d'éléments dans cette chaîne. Donc, si tous s'ouvrent, on peut les stocker tous. Mais bien sûr, il retournera un invalide, faux puisque nous ne les avons pas fermés. Maintenant, nous avons, notre pile a créé, par
exemple, un index, le même index. Il sera à 0. Et une instruction booléenne est valide. Eh bien, tout d'abord, pour être égal à vrai et caractère, appelons le courant. Maintenant. Bien qu'elle soit valide et pourquoi cette expression est valide, nous continuerons à exécuter ce code. Et bien sûr, alors que l'indice est inférieur à la longueur, longueur de l'expression. Ces conditions sont donc remplies. Continuez à exécuter ce code. Maintenant, tout d'abord, va le stocker dans ce courant, ce caractère égal à l'expression à l'index. Supposons donc que nous ayons cet exemple et tout d'abord, nous allons stocker le bord et le courant. Maintenant, nous allons vérifier si ce réalisateur correspond à l'un des symboles d'ouverture ou de fermeture. Donc, pour ce faire, laissez-moi créer une ouverture, quelques chaînes pour les créer à l'extérieur. Ils seront privés. La thérapie. Cette ouverture sera égale à ces symboles d'ouverture. Et bien sûr, statique privé. La chaîne de fermeture b égale à est des symboles de fermeture. Maintenant, ce que nous allons faire est de vérifier si ce courant correspond à l'un des symboles d'ouverture. Donc, si nous nous souvenons correctement, nous avons la classe de chaîne, l'index de méthode désactivé. Alors utilisons-le ici. Donc F haut le nom de cet index. Donc ce que nous essayons de faire ici, c'est de vérifier si le courant est une ouverture. Donc, si vous ouvrez cet index de courant, donc si courant est l'un des caractères de la chaîne d'ouverture, alors il retournera l'index de celui-ci. Ainsi, par exemple, si nous avons courant est égal à ce symbole d'ouverture, il renvoie 0, le symbole disciplinant un, et le dernier symbole d'ouverture auquel il reviendrait. Sinon, il retournera moins un s'il n'
est pas égal à l'un de ces symboles. Alors devine. Le symbole n'est pas égal à moins un. Ensuite, nous allons simplement le pousser à l'état de pile qui push. Et nous allons pousser cette somme, mais maintenant ce n'est pas le cas. C' est peut-être un symbole de clôture. Donc ce qu'on va faire, c'est vérifier que l'index est fermé. Ce courant n'est pas non plus égal à moins un. Si ce courant est l'un des symboles de fermeture, alors il renvoie toute valeur autre que moins un. C' est donc le cas et le courant est un symbole de fermeture. Ensuite, nous, puis nous allons le comparer avec une ouverture de la pile. Donc on va faire sortir un symbole d'ouverture de la pile. Et nous pouvons facilement comparer les symboles ou recompter comparer l'index. Donc, par exemple, nous avons les crochets bouclés. Ensuite, si l'on compare l'indice d'ouverture et de fermeture, s'ils sont égaux, alors les symboles sont égaux. Donc c'est ce que nous allons faire. Donc, si vous ouvrez cet index de pile, cette rondelle n'est pas égale à l'index de fermeture de ce courant. Et ce n'est pas le cas, alors nous revenons juste est valide pour faux. Maintenant, nous avons une erreur ici disant que l'index de méthode de type String classe n'accepte pas l'objet puisque la pile qui pop est un objet. Et nous savons aussi que nous ne stockons que dans ce caractère de pile. Donc, je peux dire en toute sécurité que nous savons que nous avons besoin que ce soit un personnage. Et maintenant voyons une exception non gérée, puisque nous pourrions avoir une exception ici et ce type de push et empiler la pop. Donc, pour être sûr, on va essayer et attraper. Donc on va essayer ça. Sinon, si une exception de pile s'est produite, il suffit de gadget et de retourner false. Nous allons incrémenter l'index pour passer à travers toute l'expression des éléments dans cette expression. Et nous allons retourner est valide. Donc, il retournera true si l'expression est valide, sinon elle retournera false. Maintenant, nous avons encore une modification et nous allons le faire dans la prochaine vidéo. Pourquoi exécuter le code pour vous voir dans le prochain.
6. Problème de correspondance des symboles 2: Alors voyons ce que notre code ferait jusqu'à maintenant. Par exemple, si nous avons cette expression, tout d'abord, il obtiendra le premier élément et le comparera avec l'un des symboles d'ouverture. Si ce n'est pas le cas, il le comparera avec les fermetures. Et bien sûr, si cela ne correspondait à aucune de ces ouvertures et fermetures, nous continuerons sans rien faire. Donc, deuxièmement, nous allons obtenir ce symbole d'ouverture par rapport à l'un des symboles d'ouverture dans l'ouverture de la chaîne. Et bien sûr, il correspondra aux crochets bouclés et nous allons le pousser à la pile. Maintenant, on va faire la même chose avec ce D et celui d'un personnage. Nous ne ferons rien depuis les symboles d'ouverture ou de fin. Ensuite, nous aurions ce symbole de fermeture et il
correspondra à l'un des symboles de fermeture et à la souche de fermeture. Et si c'est le cas, alors on ne fait rien apparaître. Le premier élément, l'élément supérieur de la pile, c'est-à-dire celui-ci, ce symbole. Et on va le comparer avec la dernière. Nous allons comparer l'analyse d'eux et ils sont égaux, alors nous ne ferons rien. Si ce n'est pas le cas, alors nous allons le faire, je vais dire que comme valide est maintenant faux. Par exemple, si nous avons ce symbole que la pile, nous allons avoir les crochets bouclés vers le bas et les parenthèses vers le haut. Et nous allons comparer les parenthèses avec les crochets bouclés et le pas égal. Donc, il retournera faux. Maintenant, nous avons encore une modification à faire. Par exemple, supposons que nous
ayons, disons que nous avons
ceci, ce code fonctionnerait correctement. Cependant, supposons que nous ayons des crochets ici. Maintenant, je vais citer, va commencer tous ces personnages, tous ces symboles et le cerf. Et tout d'abord, il va apparaître cette parenthèse et la comparer avec cette parenthèse fermante là égale, alors il continuera. Et l'autre, c'est ce crochets bouclés et comparez-le avec les crochets bouclés. Maintenant, on finira par B et on ne fera rien. Et notre code nous sommes retournés vrai puisque nous n'avons aucun problème avec l'ouverture et la fermeture. Cependant, nous avons encore ces crochets et notre pile. Donc il devrait, nous devrions retourner faux depuis. Tous les symboles ne sont pas appariés les uns aux autres. Donc ce que nous allons faire est de comparer le cerf, utiliser le f m est vide. Donc, si la pile est vide, si elle n'est pas vide, alors est valide va être faux. Puisque nous avons encore un ou plusieurs éléments dans la pile. Et cela devrait retourner faux, pas vrai. Et bien sûr que nous allons retourner est valide. Voyons maintenant les derniers exemples. Par exemple, le 3.5. Ce code. Nous avons un symbole de clôture. Et bien sûr, nous allons sortir de la pile et en ouvrir un. Maintenant, la pile est vide et nous n'avons aucun symbole dedans. Donc, cela va générer une exception et nous allons l'attraper ici et retourner les chutes directement. Donc c'est notre code et utilisons-le ici. Donc, tout d'abord, laissez-moi commencer par accepter une expression. Nous utilisons un scanner. Lorsque nouveau scanner, comme d'habitude. Expression égale à balayage. La ligne suivante. Nous allons utiliser cette méthode de validation. Donc, si validez, si c'est vrai, alors nous allons imprimer l'expression
est une expression de marque valide. Et exécutons ce code. Voyons voir que ça va arriver. Par exemple, nous allons entrer l'expression de retour est valide. Supposons que nous ayons ces symboles. Et bien sûr, ils sont valables puisque chaque ouverture est suivie d'un symbole de fermeture. Et si nous avons juste une ouverture qui sera invitée, juste un symbole de clôture, bien
sûr, ce serait invalide. Et enfin, si, par exemple, nous avons les valeurs, les symboles. De cette façon, il ne sera pas valide même si chaque ouverture a un symbole de fermeture, mais ils ne sont pas commandés de la bonne manière. Donc, il a renvoyé un invalide. Donc c'est tout pour la correspondance des symboles de groupe. Et on se voit dans la prochaine vidéo.
7. Problème de message secret: Maintenant, nous avons déjà une pile construite en Java. Donc, utilisons-le et travaillons avec le problème. C' est un message secret. Donc, l'idée est que nous allons recevoir un message secret qui réserve un message inversé. Donc, par exemple, au lieu de dire bonjour, Eddie sera o. donc nous allons convertir cela en Hello capiteux en utilisant coincé. Donc, tout d'abord, créons notre méthode principale. Mais cela a une méthode principale et une autre méthode qui est de décoder ce message. Mais vous serez privé statique. Chaîne, nommez-le, décodez et message de chaîne. Créons notre pile ici. Donc, tout d'abord, nous avons une pile, et la pile sera une pile de caractères. Et ce nom est égal à nu. Et bien sûr, nous allons avoir besoin d'une chaîne. Et utilisons le StringBuilder. Donc, c'est une classe de chaîne. Corde. C' est une classe définie en Java comme nom à SBI et B égal à U StringBuilder. Donc, dans ce StringBuilder, re va changer nos personnages et finalement nos mots. Donc, nous allons utiliser un tokenizer de chaîne. classe tokenizer donc distincte a permis de casser une chaîne en jeton. Donc, pour instancier le tokenizer de chaîne, nous écrivons simplement la chaîne, le colonisateur. Et vous pouvez le trouver dans le Java que vous pensez que la classe est nommée SD, instanciée avec la chaîne, le message lui-même. Maintenant que nous sommes prêts, allons-y et avons été acquittés. Donc, il dit que l'étoile ne peut pas en résulter aussi. Donc, peut simplement mettre pile de Java Tutor. Et ici, nous devrions revenir, nous le rendons plus tard. Donc, tout d'abord, lirait chaque mot dans le jeton de chaîne. Donc, tant que l'organisateur strict a plus de jetons, continuera à s'exécuter. La première chose que nous allons faire est de créer une liste extérieure droite mot Emettre. Et si ce mot La valeur qui est dans le jeton de chaîne pour lui donner comme G, le jeton suivant. Maintenant, supposons que nous ayons cette expression en premier, où elle serait celle-là. Et nous allons le lire et pousser tous les personnages dans la pile. Donc, ici, nous créons une boucle for. Car i est égal à 0 jusqu'à ce que i soit inférieur ou est-ce que la longueur va simplement pousser ce caractère dans la pile de sorte que l'enfant. Et nous avons simplement poussé tous les caractères de la pile dans ce mot à cette étape. Après les avoir poussés, nous devons les extraire en utilisant la méthode pop et une plante dans le StringBuilder. Donc, alors que ce n'est pas vide, nous ajoutons simplement des caractères qui utilisent l'ampoule standard. Et après cela, après avoir terminé de la boucle sauvage, nous ajoutons simplement cet espace blanc. Voyons donc ce que nous avons fait ici et un exemple. Donc, par exemple, comme nous l'avons dit, si nous l'avons fait, écrivons-le. Par exemple. Bonjour, au lieu d'avoir un bas se produira. C' est ça. Maintenant, d'abord, nous allons stocker cette virgule et ensuite O, L, L, E et F. Donc notre pile
ressemblera à et L, o. et, et séparons ceci. Donc, nous avons ici, c'est notre pile. Nous avons 123456 caractères. Maintenant, après les avoir triés en pile, nous devons les extraire en utilisant le livre des lois. Donc, en sortant, la première étape serait alors E, puis L, L O. Donc nous allons obtenir e l, l. Donc, si nous donnons cette entrée, cela nous rendra celui-ci. Et c'est ce dont nous avons besoin. C' est ce qu'on va faire. On doit inverser le mot de « O allèle edge » à « bonjour ». Alors revenons ici. Et simplement après avoir récupéré de la boucle sauvage, nous retournons simplement SB pour deux. Revenons à notre méthode principale. Et dans cette méthode, nous devons avoir le message et le message décodé. Tout d'abord, nous allons utiliser un scanner pour demander à l'utilisateur d'entrer un message. Et nous demandons simplement à l'utilisateur d'entrer un message. Et on le conservera dans le message. Ensuite, nous allons dans le décodé en utilisant la méthode décoder et l'avons vendu dans le message de décodage. Pour décoder notre message. Ensuite, on l'imprimera. Message décodé. Et imprimez le message décodé. Allons de l'avant et exécutons ce code. Donc nous aurions entré un message. Par exemple, comme nous l'avons dit, bonjour. Faire décoder ce message, c'est bonjour, heureux. C' est ainsi que nous utilisons l'état défini en Java et comment l'utiliser
pour inverser quoi que ce soit du message aux nombres ou quoi que ce soit. Nous voulons vous voir dans la prochaine vidéo.
8. Quen en d'en de la: Parlons maintenant des files d'attente. Une file d'attente est une structure de données linéaire qui suit un ordre particulier dans lequel les opérations sont effectuées. L' odeur est la première entrée, la première sortie. Un bon exemple de file d'attente est un restaurant. La personne qui vient en premier sera servie en premier. La différence entre les piles et les files d'attente réside dans la suppression. Et au lieu de cela, nous supprimons l'élément le plus récemment ajouté, Et la file d'attente, nous supprimons l'élément le moins récemment ajouté. Par exemple, ici nous avons deux positions avant et fondamentalement nous avons deux opérations principales, file d'attente et dequeue. Ils sont équivalents à pousser et à éclater dans des piles. Donc, quand nous voulons mettre en file d'attente et q, l'élément à la position. Et quand nous voulons faire la queue, nous utilisons simplement la position avant et retirons l'élément de la première position ou des secondes, ainsi de suite. Maintenant, nous montrons l'utilisation d'une file d'attente et d'un exemple. Retournons à Eclipse. Fermez ces classes de stocks et créez un nouveau package. Et basé sur le sname. Q : Donc, dans ce paquet, comme nous l'avons fait dans cet exemple, nous allons créer une interface q a q de base. Bien sûr, nous allons créer une exception. Exception. Renommons le. Ce sont donc nos trois classes principales. Et commençons par notre interface. Nous allons avoir les méthodes, comme nous l'avons fait dans cet exemple. Nous avons un bleu, mais la taille booléenne est vide. Le vide public prendra les objets
publics pour renvoyer un objet et vous le déplacez. Et nous allons nommer un objet noir, le nommer devant. Pour juste voir le devant. Ici, nous avons un capital énergétique. Et comme nous l'avons fait dans les exemples précédents, dans cet exemple, nous devons créer notre exception. Créons un message constructeur, message codage et étend exception. Maintenant, nous avons juste besoin de jeter ces exceptions et
ces exceptions de file d'attente de ces méthodes. Et nous faisons la même chose ici et ici. Donc, c'est tout pour l'exception Q et Q. Et la prochaine vidéo que nous utiliserons fonctionnera avec le goo basé sur la baie et créera nos méthodes.
9. Une file d'attente basée sur le tableau 2: Commençons maintenant avec le cube basé sur le tableau. Comme vous pouvez le voir ici dans cet exemple, nous avons l'entrée frontale de l'index. Donc, tout d'abord, nous devons créer un tableau de nommage d'objet. Et bien sûr, nous allons créer un front et une taille. Maintenant, allons de l'avant et créons notre constructeur. Donc, comme d'habitude, la capacité, parce que nous travaillons avec un tableau et nous devons donner la, la taille de la longueur et créer notre objet avec la capacité égale à la taille, égale à 0, égale à 0 initialement. Maintenant, commençons par notre taille. Bien sûr, nous allons mettre en œuvre et nous
devons l'autoriser sur deux méthodes. Donc, ici, nous avons toutes les méthodes et l'interface de côté avec la taille retournera simplement la taille, quelle que soit la taille que nous venons de le retourner. Maintenant, vide est vide. Nous retournons juste si la taille est égale à 0. Donc, si la science est égale à 0, alors elle est vide. Sinon, il n'est pas vide et il devrait retourner true. Cette expression est une expression booléenne et elle renvoie true si la taille est égale à 0, sinon elle retournera false. Maintenant, commençons par la mise en file d'attente. Tout d'abord, nous devons vérifier si la taille est égale à array.length. Ensuite, nous n'avons plus d'espace dans l'inclinaison et nous devons lancer l'exception. Donc, nous devons jeter l'exception. Et en disant que le pied Q S. C' est la première condition. Maintenant, si ce n'est pas le cas, alors nous pouvons ajouter l'élément à l'inclinaison. Donc, pour l'ajouter, nous allons juste utiliser l'année. On va l'ajouter à l'arrière. Et maintenant, nous devons incrémenter la lecture. Donc, quand nous pouvons simplement dire cela, que v plus. Cependant, quand nous arrivons à un point où l'arrière est à la position six, et nous ajoutons un élément ici, alors nous devons incrémenter le vrai U2 sera à la position sept. Maintenant, cependant, si nous essayons d'ajouter une fois de plus, cela nous donnera une exception. Mais si l'un des éléments avant ici sont supprimés. Par exemple, si nous utilisons le Q et nous en enlevons un, alors nous avons un espace vide ici. Et nous ne l'avons pas utilisé parce que c'est juste incrémenter d'un. Donc, nous devons le résoudre. Nous devons résoudre ce problème en disant que chaque fois que cette sphère est égale à array.length, dans ce cas est égale à sept. Ensuite, nous devons le modifier et lui donner une valeur de 0 pour retourner p2 ici. Donc, pour ce faire, nous pouvons simplement dire que peut utiliser l'instruction f. Et si j'avais besoin de longueur est égale à l'arrière, alors nous allons juste donner une valeur de 0. Cependant, nous pouvons simplement dire que v est égal à la bière plus un. Nous l'incrémentons et le reste du temps. Donc ce que nous disons ici, c'est V est égal à d plus un. Chaque fois que réel plus un est inférieur à cette longueur iD, nous n'avons pas de problème. Tout fonctionnera correctement puisque j plus un reste de array.length est le même. Puisque, par exemple, si nous disons pour le commandant de cinq, il est 43 reste de cinq. Il l'est. Cependant, si cinq, reste de cinq est 0, donc chaque fois que nous avons trois plus un est égal à array.length arrière deviendra 05 reste de cinq sixièmes, reste de six est égal à 0. Alors, c'est ça. Et nous allons juste incrémenter la taille puisque nous avons ajouté un élément. Maintenant passons à la file d'attente. Et cet exemple ici. Tout d'abord, nous devons vérifier si la taille est égale à 0 ou nous pouvons utiliser comme méthode vide. Par exemple, si elle est vide, serait-il juste que vous file d'attente exception disant
que dans cette file d'attente est vide. Et ensuite on peut travailler. Maintenant, tout d'abord, nous devons créer un objet à retourner. Donc ce que nous allons retourner, c'est l'élément à l'avant. Donc, nous revenons simplement. Et maintenant, nous devons le retirer de la file d'attente. Donc, pour ce faire, nous utilisons simplement la même technique que celle que nous avons utilisée pour l'année r1 plus un reste de à un neuvième, nous allons entrer dans une taille de décrémentation puisque nous avons enlevé un élément et nous revenons juste pour revenir pour cela est-il pour la défile ? Nous avons encore une dernière méthode. Et cette méthode, nous allons juste jeter un oeil à ce que, ce que nous avons à l'avant. Donc, tout d'abord, on va vérifier s'il est vide. Rangée. Laisse-moi copier ça. Et fondamentalement se déchirer. Et bien sûr, le tableau retourné à l'avant. On n'a pas besoin d'enlever quoi que ce soit. Nous allons juste nous tourner pour revenir. Ce sont nos méthodes. Et retourné ont encore une nouvelle méthode. C' est une méthode ToString. Nous ne l'avons pas utilisé dans la pile, mais vous pouvez en créer un ici et imprimer la file d'attente quand nous le voulons. Alors allons de l'avant et mis en œuvre. Maintenant, si nous voulons créer cette méthode publique, essayant de chaîne, et nous pouvons travailler avec la boucle for et passer à travers tous les éléments dans le tableau. Cependant, je préfère le modifier à chaque fois que nous mettons en file d'attente ou de retrait. Donc, nous allons tout d'abord créer un StringBuilder. C' est comme une chaîne, mais nous pouvons la modifier. Vous pouvez y ajouter quand nous le voulons ou en supprimer. Donc, nous créons à nouveau une chaîne sous cette définie dans la classe java.lang. Donc StringBuilder sb, sb, et il le
donnera, instancier ce nouveau StringBuilder. Et vraiment bien, on peut l'utiliser. Donc, chaque fois que nous mettons en file d'attente, nous pouvons ajouter pour distinguer le SP qui ajoute tout ce que nous avons ajouté plus d'espace. Et chaque fois que nous
supprimons, nous pouvons retirer l'élément q d'ici à juste sba dot delete de position 0 à la longueur de l'objet plus un pour tenir compte de l'espace. Donc, jusqu'à ce que l'objet retourne cette longueur. Pour retourner le toString, tout d'abord, nous devons le convertir en une chaîne qui est neuf plus un. Et c'est ainsi que nous supprimons du StringBuilder. Et bien sûr ici, nous retournons simplement sba point deux. Et on est bons. Donc, c'est tout pour la classe de file d'attente basée sur la baie. Et dans la vidéo suivante, nous allons créer la classe de pilote dans laquelle nous allons tester ces méthodes.
10. Application en quen en dous: Maintenant que nous avons toutes nos méthodes, créons notre classe de transfert. Donc, c'est un chauffeur et discuter de la nourriture. Nous avons notre méthode principale. Nous devons connaître l'exception de file d'attente. Et créons la base ennemie, à savoir U égal à U basé sur la baie Q avec la capacité de. Pour. Maintenant, nous allons mettre en file d'attente quelques éléments. Donc, par exemple, q point q un. Et copions-le quatre fois 234. Maintenant, si nous utilisons, si nous imprimons Q ou Q, les deux chaînes sont les mêmes. On a 1234. Maintenant, par exemple, nous allons faire la queue. Donc, par exemple, si nous
disons, nous allons l'imprimer pour voir ce que nous allons supprimer. Q point dq. Il retirera la file d'attente de l'élément avant au matériau de position. Donc dans ce cas, on en aura un. Donc on a fait la queue de l'étang et si on les imprime encore une fois, on en aura 234. Maintenant, si nous ajoutons un élément, par
exemple, disons que nous allons en ajouter cinq. Donc ce que nous allons obtenir si nous l'
imprimons maintenant est 2345. Donc c'est ça. Maintenant. Cela ne ressemble pas à ceci dans le, puisque nous utilisons le StringBuilder. Cependant, ce cinq est à la position 0 Maintenant dans le tableau. Mais nous voyons, nous le voyons comme 2345, puisque nous ajoutons simplement l'élément à la position
dérivée et vous le déplacez de la position gauche et le StringBuilder. Maintenant, par exemple, utilisons quelques-unes des autres méthodes. Par exemple, la taille de libre, pour utiliser les côtés q-dot. Ici, nous en aurons trois puisque nous n'avons que trois éléments. Nous avons donc ici trois éléments. Cependant, si nous l'utilisons ici, imprimez la taille u point, nous obtenons quatre puisque nous avons ajouté un élément de plus. Donc, ici, nous pouvons voir qu'il est clairement d'abord, nous avons trois. Cependant, si nous l'imprimons après l'ajout de l'élément cinq, nous obtenons quatre. Essayons maintenant Q qui est vide. Imprimantons-le. Est vide et nous allons devenir faux puisque nous avons ajouté quelques éléments ici. Cependant, il pourrait le diviser avec cela avant de faire la file d'attente. Ensuite, nous allons obtenir ceci vrai et puis faux puisque nous avons ajouté quelques éléments. Ceci est un exemple rapide de Q. Et la prochaine vidéo, nous allons parler problème de
Joséphus et apprendre à le résoudre. Alors on se voit dans la prochaine vidéo.
11. Problème de Josephus: Maintenant, résolvons le problème de Joseph. Tout d'abord, comprenons-le. Donc, pour ce problème, nous allons avoir des joueurs et un numéro. Par exemple, disons que nous avons trois joueurs, John, Alfred, et les tendances. Dans ce cas, disons que nous avons le nombre et le nombre est égal à deux. Pour, par exemple. Tout d'abord, nous devons stocker ces noms, NICU. Le jeu se termine quand il reste une personne. Par exemple, quand nous disons k égal à quatre, Tout d'abord, nous devons retirer la file d'attente. On fait la queue d'ici. On doit faire la queue de John et l'ajouter ici. Alors. Donc c'est une fois que nous l'effectuons quatre fois. Donc nous avons encore trois fois. Donc nous devons faire la queue, Enqueue, Déqueue et AQ. Et c'est la dernière fois. Donc maintenant, nous effectuons cette opération pour tous les temps. Et nous avons fini avec Alfred à la première position. Donc, on fait la queue. Maintenant, nous avons encore deux noms. Donc, nous allons effectuer la même opération quatre fois. Donc DQ, Cress, et même chose ici. Et enfin, la dernière fois avec un énorme morceau et placez-le ici. Donc, nous finissons avec la crête à la première position. Donc, nous l'enlevons en utilisant la méthode q et nous finissons avec John switch. John est le vainqueur. Alors, c'est ça. Donc c'est l'idée de la Géorgie, ce problème que nous allons résoudre. Allons maintenant implémenté et sortant. Tout d'abord, créons notre méthode plus nommez-la afin qu'il prenne un séjour à un tableau de chaînes. Et nommons les joueurs et un entier k. Maintenant, tout d'abord, créons une chaîne et
ajoutons une base de deux q égal nu à une vue de base avec la capacité des joueurs de cette longueur. Donc, combien de joueurs nous avons donnerait juste l'affichage de la queue. Maintenant, tout d'abord, essayons. Et si quelque chose se passe, nous allons juste attraper cette exception est une exception de file d'attente bien sûr, et simplement retourner ce sauvage, identifiant le gagnant. Maintenant, nous allons travailler avec notre bloc
Try. Tout d'abord, nous devons mettre en file d'attente tous les joueurs dans le cube. Donc, pour tous, nous pouvons dire que pour la boucle for, il y a cette longueur et dans la file d'attente à chaque fois cependant, nous pouvons utiliser une autre forme permettre MOOC, qui est nous nom joueur. Quatre joueurs dans des couches distinctes, ferait juste la mise en file d'attente de cette couche. Donc, c'est une autre forme de la boucle for. Nous pouvons l'utiliser quand nous avons une tache ou quelque chose que nous pouvons travailler comme, en tant que variable et nous pouvons inclure dans cette file d'attente en utilisant cette boucle pour. Maintenant, allons à notre boucle while. Tant que notre file d'attente a plus d'un élément, continuera à travailler dedans. La taille de la file d'attente y est donc supérieure à un. Ce code serait exécuté. Donc, tout d'abord, imprimons la file d'attente sans la modifier. Donc, il serait juste d'imprimer la file d'attente. Et donc q. Maintenant, nous utilisons la boucle téléphonique de 0, del k. Nous allons juste utiliser la file d'attente q-dot, Q, le Q. Donc ce que nous faisons ici est, tout d'
abord, nous allons retirer la file d'attente, aller supprimer un élément de la , puis l'a stockée une fois de plus en utilisant la file d'attente. Donc nous pouvons dire que nous avons besoin d'objet. Par exemple, égal à Q point dQ. Nous avons juste mis en file d'attente l'élément et le stockons ensuite. Donc, c'est la même chose, mais vous pouvez simplement ajouter ceci dans le paramètre du q-dot mis en file d'attente. Étant donné que Enqueue accepte un objet et ce du, le dq renvoie un objet. Donc c'est la même chose. Maintenant, nous simplement après avoir travaillé dans cette boucle pour la file d'attente et la mise en file d'attente pour k fois. Maintenant, nous avons simplement mis en file d'attente le dernier élément, le prénom du joueur. Donc, nous pouvons simplement voir dequeue et vous le déplacez de la liste et disons qu'il est sorti. Maintenant, on en a fini avec ça. Après avoir effectué ce tout en boucle, nous avons encore un joueur et il est le gagnant. Donc, quand r égal à Q point dq et nous le retirons de la liste, bien sûr, nous avons une erreur parce que c'est un objet et ce gagnant est changé. Donc, et vous savez avec certitude que cet élément est une chaîne. Donc, nous pouvons lui donner la valeur de chaîne. Maintenant que nous avons fini avec notre code serait finalement retourné. Donc, nous sommes simplement ici. Donc c'est tout pour le problème de Joséphus. Créons notre méthode principale et exécutée. Mais nous allons tout d'abord créer une chaîne de tableaux, donc, et une chaîne de noms. Appelons ça les couches. Et ça, nous allons créer les noms, par exemple, Chris et Fred et John. Donc, c'est notre chaîne et une chaîne et nous avons un entier k que sergé vient demander à l'utilisateur d'entrer. Donc nous allons utiliser le scanner pour le scanner. Et nous allons demander à l'utilisateur et gay et stocké tout ce que l'utilisateur a entré et la variable k. Maintenant, le gagnant est résoudre les couches et K. Donc, puisque cela renvoie une chaîne, nous pouvons le stocker dans une chaîne et simplement l'imprimer. Maintenant, allons de l'avant et exécutons ce code. Donc, ce que nous allons obtenir est entrer k Par exemple, allons feuille. Donc d'abord, nous avons Chris, Alfred Chuang. Maintenant, nous effectuons k4 fois. On a déménagé Chris, puis Alfred, puis John, puis Chris, et on a fini avec Alfred à la première position. Alors on fait la queue d'Alfred et Alfred est sorti. Maintenant. On a encore John et Chris. Donc, nous effectuons cette opération quatre fois. John, Chris, John et Chris, et nous finissons avec John à la première position. Et John est sorti. Donc nous avons toujours un élément ou un joueur, et c'est lui le gagnant. Alors imprimez juste que le gagnant est Chris. Donc c'est tout pour le problème de Joséphus. se voit dans la vidéo suivante.
12. Liste entièrement liée en ligne, partie 1: Comme les tableaux, la liste liée est une structure de données linéaire. Cependant, les éléments de cette liste sont liés à l'aide de pointeurs. Lorsque nous utilisons des tableaux, nous avons quelques limitations. Par exemple, la taille des tableaux est fixe. Et quand nous avons besoin d'insérer un nouvel élément dans le tableau, c'est cher car nous devons créer de la place pour cet élément spécifique. C' est donc un exemple de LinkedList. Maintenant, ce sont des nœuds, donc nous avons quatre nœuds dans cet exemple. Et chaque nœud est des données et de l'adresse. Donc, nous avons une boîte pour les données où nous stockons notre objet élément, entier, chaîne, caractère, et ainsi de suite. Et nous avons une autre boîte pour stocker l'adresse du nœud suivant. Donc, nous pouvons penser à cette adresse d'un pointeur. Nous n'avons pas besoin de connaître le nombre numérique exact ici, mais il devrait pointer vers l'adresse du nœud suivant. Donc, la liste LinkedList est cette liste. Et quand nous disons individuellement, Cela signifie que les nœuds sont liés ensemble en utilisant une direction. Donc nous ne pouvons pas revenir de 20 à 10, nous ne pouvons que passer de 10 à 2030 et ainsi de suite. C' est donc l'idée d'une liste unique liée. Et allons dans notre espace de travail Eclipse et créons un nouveau package. Nommez-le une seule liste liée. Et ce paquet, comme d'habitude. Commençons par créer notre classe d'exception. Maintenant, puisque cette liste est infinie, donc nous pouvons ajouter ce que nous voulons dans cette liste et nous n'avons pas de limite. Donc, nommons cette exception comme exception de liste vide. Puisque nous n'avons pas à nous soucier de savoir si nous avons dépassé les éléments, c'est que nous n'avons pas de limite. Et dans cette exception, bien sûr, nous allons étendre la classe d'exception. Prolonge l'exception comme nous l'avons fait auparavant, et créer notre liste vide constructeur, le message appelé une soupe avec message de paramètre. C' est donc notre exception de liste vide. Allons de l'avant et créons une autre classe. Maintenant. Voyons, par exemple, créons tout d'abord, la position et cette interface va avoir une seule méthode pour obtenir l'élément. Maintenant, nous devons spécifier qu'il s'agit d'un type générique. Donc, quand nous disons d, Maintenant, c'est un type de données générique. Et on a eu ce cours. Nous avons vu comment l'utiliser à, laissez-moi simplement créer une autre classe qui est noeud. Donc, nommons le noeud de liste uniformément lié à l'écoute avec S néant. Et comme nous l'avons fait dans la position, qui simplement à D. Et bien sûr, nous allons mettre en œuvre la position de l'interface. Et, et la méthode de débogage obtenir élément. Et simplement, créons des variables d'éléments à l'extérieur. Nous avons l'élément d. Nous avons aussi le S rien lui-même. Sauf nom et suivant. Donc, nous devons des valeurs privées, des variables à l'extérieur. Donc, pour obtenir l'élément, nous retournons simplement l'élément. C' est donc notre méthode d'élément de données. Maintenant, nous pouvons également vouloir retourner le nœud suivant. Donc, nous disons simplement que le public a encore neigé. Et nous reviendrons ensuite. Ensuite, le noeud suivant deux nous avons. Maintenant, nous pouvons également vouloir définir le noeud suivant. Par exemple, créons une autre méthode à envoyer pour le définir. Donc vide public, c'est le nom et il va l'enlever, et il faudra un noeud et le paiement ensuite. Maintenant, nous allons définir ceci pour être égal à celui-ci. Donc, ce que nous avons fait ici est de définir le noeud suivant. Nous avons ici. Il est nommé ensuite et définissez-le tout ce que nous avons ici. Donc, c'est le sous-réseau. Et si nous voulons définir l'élément, nous avons l'élément d peut simplement créer un autre élément public void set. Et dans ce cas, nous obtenons un élément, l'élément et dire cet élément point à l'élément. Lorsque nous utilisons cela, nous disons que nous avons besoin la variable locale d à partir d'ici et que nous la définissons sur ce que nous avons, le paramètre ici. Maintenant, créons notre prochaine interface. Cette interface serait, disons que je suis un Teslas. Donc, cette liste S est un peu une interface, absolument. Et ici, nous avons toutes nos méthodes. Donc, la première méthode, et bien sûr, c'est un type générique. La première méthode comme d'habitude, ce sera la taille. Ensuite, le booléen public est vide. Maintenant, nous avons encore, nous devons aussi y répondre. Maintenant, si nous allons à cet exemple. Donc c'est notre tête et c'est notre Dale. Donc, nous pourrions vouloir stocker une valeur en main. Donc, nous allons créer une méthode qui stockée à la tête. Donc vide public, insérer à la tête et quel que soit l'animal. Aussi, nous pourrions vouloir le vendre à la queue. Alors répondez. Maintenant, puisque c'est illimité, donc nous n'avons pas à nous soucier de l'exception de liste vide. Toute exception. Cette fois, nous pourrions vouloir supprimer un élément en utilisant la suppression de Pat. Et dans ce cas, nous devons lancer l'exception de liste vide car ils liste peuvent être vides. Et la même chose se produira si nous utilisons retiré de la queue, jette une exception. Donc maintenant, nous avons fini avec notre position S liste et allons continuer avec cela dans la prochaine vidéo.
13. Liste entièrement liée à la seule partie 2 de la partie 20 de la liste: Alors maintenant que nous avons toutes nos méthodes, allons créer une nouvelle classe et les écrire. Donc, cette classe sera une classe de liste unique liée. Et dans cette classe, nous allons tout d'abord, étendue ou implémenter la liste S que nous avons créée plus tôt. Mais bien sûr, tout d'abord, il pourrait être générique et mettre en œuvre. Nous pouvons avoir les 0 et nous devons hériter des méthodes. Maintenant, nous avons toutes les méthodes et travaillons avec eux. Donc, tout d'abord, nous avons la taille. Et avant cela, créons des variables à l'extérieur. La première variable est les nœuds. Comme nous l'avons dit, nous avons deux nœuds, la tête, qui sera le premier élément ou le premier nœud. Donc, c'est le noeud de tête et la queue est au dernier noeud. Donc, nous avons deux nœuds comme pas avec E. Et nous avons aussi des signes comme d'habitude. Et créons le StringBuilder pour l'utiliser pour la méthode toString. Maintenant, nous avons aussi la liste constructeur Republic. Et ici, instancions la tête et la queue pour être égales à. Donc, la première fois que nous créons la liste unique liée, nous avons la tête et t égale à aucun. Et la taille sera égale à 0. Et nous allons créer le StringBuilder. Maintenant, nous avons aussi ici. Donc c'est tout pour le liquide, le constructeur. Commençons par la science. Tout d'abord, pour la taille, nous retournons simplement la taille. Pour le vide est vide, nous avons simplement retourné comme d'habitude. Si la taille est égale à 0. Passons maintenant aux autres méthodes. Ils sont beaucoup plus compliqués et nous devons les travailler lentement. Donc, la première méthode est insérer à la tête. Revenons à la photo. Et ici, nous pouvons voir quatre nœuds. Supposons que nous ayons besoin d'ajouter un nœud ici. Supposons que nous ayons besoin d'ajouter un audit avec un élément 0. Donc, la première chose que nous devons faire est de créer le nœud, puis de le lier à ce nœud. Après ça, nous devons bouger la tête depuis qu'ils étaient là. Maintenant, nous devons le déplacer ici. Donc on va donner la tête. Nouvelle position, qui est le nouveau nœud. Alors revenons ici et mis en œuvre. Donc, la première chose que nous devons faire est de créer ce nœud. Et nommons qu'il connaissait comme nœud. Il sera égal à nouveau noeud, ce noeud en utilisant e. Et le noeud suivant est, comme d'habitude, nous avons ceci, cette liste liée. Si nous créons un nouveau noeud ici, le noeud suivant sera la tête. Maintenant, nous l'avons toujours et voyons ce que c'est. Donc oui, nous devons créer le constructeur. Et la neige que nous avons oublié de créer. Revenons donc à S néant et créons notre constructeur, qui est la connaissance du public. Et je sert d'élément. Et cela prendra deux paramètres, a0 et a1. Et l'élément sera égal à E, max serait égal à. Et maintenant, nous pouvons revenir à notre liste unique liée. Et nous, ok, maintenant après cela, après avoir créé ceci en tant que nœud, nous devons vérifier si la liste est vide. La liste est vide ou nous pouvons simplement dire F est vide. Si c'est le cas, alors nous n'avons aucun élément dans ce nœud. Donc, le premier élément que nous allons ajouter sera la tête et la queue. Donc encore une fois, dites que DE est égal à mu néant. Dans les deux cas, si elle est vide ou non, la tête sera égale à cela. Donc, ce f n'exécute que cette ligne. Et ils avaient dans les deux cas serait égal à cette nouvelle asymptote. Après cela, nous devons incrémenter la taille puisque nous avons ajouté un nouvel élément et nous
devons l'insérer dans le SPS StringBuilder afin que nous puissions ajouter. Mais quand nous utilisons append, nous avons ajouté à la fin. Cependant, nous devons l'ajouter au premier élément. Donc, nous devrons utiliser insert, eh bien, devons-nous l'insérer à la position 0 ? Et qu'avons-nous besoin de répondre ? Nous devons insérer ce nouveau noeud et ce nouvel élément qui est E. Et c'est l'espace blanc ici. Et on parlera. Donc c'est tout pour insérer à la tête. Maintenant, allons travailler avec insert à la queue. Donc, la première chose que nous devons vérifier, insérer une queue est aussi si elle est vide. Maintenant, nous allons créer le nouveau nœud AST. En tant que nœud. Le nouveau noeud en tant que noeud, la valeur de E. Et donc le noeud suivant, comme vous pouvez le voir dans cette image, est null. Par exemple, si vous voulez ajouter un élément ici, un ODE. Nous devons donc pointer d'ici vers le nouveau nœud. Et maintenant, la table serait le dernier nœud. Et ce dernier noeud ne signalera rien. Ce ne sera pas le cas. Alors retournons à ici et travaillons. Donc, ici, nous avons inséré à l'il. Tout d'abord, nous devons vérifier s'il est vide. Si elle est vide, alors c'est aussi le pourrait cette nouvelle neige. Et dans les deux cas, il sera égal à l'astronaute. Sinon, si ce n'est pas le cas, si ce n'est pas vide et nous avons déjà un élément. Donc, cet élément, le dernier élément, qui est le détail ici, nous allons pointer vers ce nœud. Alors comment on le fait ? Si elle n'est pas vide, puis queue qui s'est assis membre suivant, nous avons créé une méthode pour définir max et le delta setText sera le nouveau nœud. Maintenant, la queue serait ce nouveau noeud. Comme nous l'avons dit. Nous incrémentons la taille et ajouté à la fin
du constructeur de chaîne ou en utilisant soit ToString LAS spec, nous avons toujours retiré du chapeau, retiré de la queue. Et vous pourriez ajouter, aller de l'avant et obtenir la queue pour jeter un oeil à ce que nous avons à la tête et à la queue. Et bien sûr, notre dernière méthode, cette méthode toString. Donc, nous travaillons sur eux dans la prochaine vidéo.
14. Liste entièrement liée à la seule partie 3 de la partie de la liste: Nous avons encore quelques méthodes ici. Commençons donc par la méthode retirée de la tête. Tout d'abord, supprimons cela. Et la première chose que nous allons faire est de vérifier si la liste est vide. Donc, si elle est vide, alors nous devons lancer l'exception de liste vide. Tapez l'exception et indiquez que la liste est vide. Si ce n'est pas le cas, nous continuerons sans lancer cette exception. Maintenant, l'élément que nous allons retourner ce magasin dans une variable appelée à retourner. Et c'est l'élément qui est à la tête qui obtiennent élément. Donc maintenant nous avons cet élément et le stocker et de revenir. Maintenant, si nous avons besoin de vérifier si la tête est égale à la queue autre n, En d'autres termes, que nous n'avons qu'un seul élément dans cette liste, alors la tête et la queue seront égales à null dans ce cas. Donc f est égal à k, alors dira simplement que AD est égal à, est égal à neuf. Donc, nous y transférons cet élément. Nous n'avions qu'un seul élément et nous l'enlevons. Donc maintenant la tête et la queue seront égales à null. Sinon. Si ce n'est pas le cas, alors puisque nous avons retiré de la tête, était nous enlevons cet élément. Maintenant, au lieu de pointer sur cet élément, maintenant la tête sera ce nœud. Donc, nous devons enlever les pointeurs de la tête d'ici à ici. Donc, pour ce faire, nous allons simplement dire que la tête est égale à la tête suivante. Suivant. Donc c'est ça. Et bien sûr, puisque nous supprimons un élément, nous devons décrémenter la taille d'un et supprimer de StringBuilder, comme le plomb du StringBuilder. Nous devons commencer par 0 et,
et avec tout ce que nous avons ici. Et cet objet, c'est de revenir à la force et la longueur de celui-ci plus un point de nombre de pieds blancs. Nous allons supprimer et enfin, revenir au retour. Maintenant, cela est déduit, retiré de la tête sans tête. Continuez avec elle déménager de Taylor. Maintenant, ici. Même chose. Tout d'abord, nous devons vérifier s'il est vide, est vide, puis nous lançons une exception disant cette liste. Et sinon, nous continuons. Nous devons stocker le retour égal à ce que nous avons en détail depuis le retrait de la queue qui obtiennent élément. Maintenant, nous devons également vérifier si la tête est égale à k. En d'autres termes, est la tête et les queues. Le même noeud. n'avons donc qu'un seul élément. Alors. La tête et la queue seront égales à null et la liste sera vide. Donc, si la tête est égale à, nous disons simplement que doit être égal à prendre à cela. Sinon, je vais travailler avec ça depuis qu'on déménage d'aujourd'hui. Revenons à notre photo ici. Et voyons, par exemple, si nous voulons supprimer ce nœud. Donc, nous enlevons ça. Maintenant, nous devons dire que la queue est ce noeud. Et pour ce faire, rappelez-vous, c'est une liste à lien unique. On ne peut pas retourner d'ici à là. Donc, ce que nous devons faire est de créer une boucle et de passer à travers tous les nœuds jusqu'à ce que nous arrivions à ce nœud. Donc nous ne voulons pas le dernier noeud, nous avons besoin de celui avant. Donc, pour ce faire, revenons à Eclipse et implémentons ce code. Donc, tout d'abord, nous devons créer un nouveau nœud autre que la tête et la queue. Donc, ici, nous avons la tête et ici nous avons détaillé milieu pour créer une limite atlas. Et il passera à travers tous les nœuds jusqu'à ce que ce nœud soit atteint. Nous avons donc un nouveau noeud, D. Nommons une ville à la première, à la première position. C' est à la tête. Alors que l'humidité n'est pas égale au détail, ce code sera exécuté, sorte que ce sera égal à eux, mais obtenez ensuite. Donc, chaque fois que nous vérifions si la note suivante est la queue, si ce n'est pas la queue, alors nous irons au nœud suivant. Et atteindre celui-là. Nous, quand nous atteindrons celui-ci, vérifierons si le noeud suivant est la queue. Oui, alors nous sortons de cette boucle while. Maintenant, nous avons notre position, notre nouvelle position qui est ici, et l'humidité pointe vers ce noeud. Donc, nous pouvons simplement dire qu'ils seraient égaux au temps. Et bien sûr, puisque nous sommes ici et que nous ne voulons plus cet arabe, nous donnons simplement cette valeur, une valeur nulle. Donc, nous pouvons simplement dire que cela était assis à côté d'une valeur de null. Nous n'avons plus besoin de pointer sur un noeud après la queue. Maintenant que nous avons fini avec cet or, nous pouvons simplement décrémenter la taille et balayer, enlever un élément, et nous devons le supprimer d'ici, à partir du StringBuilder. Maintenant, voyons comment pouvons-nous supprimer. Par exemple, si maintenant StringBuilder, nous avons 1234 et nous devons retirer de la queue. Donc, ce que nous allons faire est de savoir quelle est la longueur de ceci et moins la longueur de la valeur finale. Par exemple, il est 12 avec l'espace 34567. Donc c'est sept moins un, ce qui est six. Donc nous allons commencer à cette position et nous allons finir la longueur. Alors comment on fait ça ? Nous avons simplement droite sba dot length moins tout ce que nous avons dans cet élément pour retourner la chaîne, ce neuvième minus1. Et on finira par SBY, cette longueur. Maintenant, nous avons supprimé de StringBuilder et allons simplement le retourner. Donc c'est tout pour les démis de Dale. Et allons-y et continuons avec l'autre message. On envoie, on prend la tête et on prend la queue. Et bien sûr la dernière méthode qui est une chaîne. Alors commençons par le get. Et nous forçons simplement, nous allons lancer l'exception de liste vide. Si elle est vide. Nous allons lancer cette exception. Et cette exception que la liste est vide. Maintenant, sinon ce n'est pas le cas. Ensuite, nous retournons simplement la tête qui obtenir élément. Copions ce code et créons get tail. Donc, au lieu d'obtenir la tête ou la queue et de vérifier si elle est vide, sinon nous avons une queue qui obtient élément. Maintenant, la dernière méthode est chaîne publique à chaîne. Et puisque nous utilisons le StringBuilder, peut simplement retourner, il, renvoie Sb à la force. Donc ce sont nos méthodes et maintenant nous sommes tous prêts. Nous pouvons les utiliser dans un cours de rhétorique dans la prochaine vidéo.
15. Application de la liste reliée en toute seule: Maintenant que nous avons toutes nos méthodes, allons de l'avant et utilisons-les dans notre classe de pilotes. Donc c'est notre classe de chauffeurs. Et cette classe, comme d'habitude, est la méthode principale. Créons la liste unique d'entiers. Et le même, il seul lié liste SLL. Vous pensez LinkedList. Et tout d'abord, nous allons imprimer la taille de celui-ci. Donc, en tant que taille de point, allons de l'avant et exécutons ce code. Le compte de CO2 se produira. La taille est 0. Maintenant, ajoutons quelques éléments. Donc, j'ai dit que l'insertion à la tête un, SLL, que l'insertion à pour aider SLL point insert à avait trois. Imprimons la liste des singling ici. Et on va en avoir 12. Et après cela, nous avons inséré à la tête l'élément trois. Donc c'est la tête, donc on en a 312. Maintenant, si nous insérons à Tate par exemple, insérez la date numéro un, puis imprimez-la une fois de plus. On aura 3121. Maintenant, vérifions ici. S' il est vide, est vide, et vérifions-le encore une fois. Est vide. Exécutez ce code, nous obtenons vrai au début, puis après avoir ajouté quelques éléments, nous obtenons faux. Maintenant, nous avons encore quelques méthodes. Par exemple, retirons de la tête. Donc, nous pouvons simplement enregistrer ce point SLL retirer de la tête. Imprimez SLL. Nous avons ici. Donc, cette erreur est une exception non gérée, nous devons lancer cette exception, connaît l'exception vide. Maintenant, allons de l'avant et exécutons ce code. Il n'y a plus de terre. Et nous avons un sens à un, retirez cet élément de la tête. Faisons la même chose à ce jour. Donc, comme LL retirer de la queue et imprimer une dernière fois. Nous en obtiendrons un après avoir enlevé le dernier élément. Et dans tous nos exemples, nous avons utilisé entier. Cependant, nous pouvons choisir n'importe quel type que vous voulez. Par exemple, la chaîne double, n'importe quoi. Et cela fonctionnera de la même manière. Donc c'est tout pour cette vidéo. Rendez-vous à la prochaine.
16. Stack basé sur SLL: Maintenant, une chose que nous pouvons faire cette liste unique est de créer une étape. Donc, nous avons les cours, c'est une pièce de 100 pour cette étiquette. Alors créons notre interface de pile. Nommez-le. Et la pile serait générique. Type. Ça va comme d'habitude. Le booléen est vide. Et la poussée. Ce que nous allons pousser l'élément B. B aussi cette bosse. Et bien sûr, nous devons créer la classe d'exception, mais cette balise, donc pile exception. Et comme d'habitude étendre l'exception avec le constructeur. Mais ce message, mais ce message et nous avons fini avec cette exception, l'
utiliserait avec Bob et haut, donc sait cette exception. Et ici connaît aussi l'exception. Mais la différence entre l'utilisation de listes à lien unique et à un est que lorsque nous avons besoin de pousser, nous n'avons pas de limite puisque la liste à lien unique n'est pas limitée. Cependant, lorsque nous avons utilisé tableau, rappelez-vous que nous avions l'habitude de jeter ici aussi une exception puisque nous pourrions dépasser la limite de la journée. C' est ça pour le StatPlus. Maintenant, allons de l'avant et créons notre pile basée sur une liste unique liée. Donc, il s'agit d'une liste unique liée basée. Et cette liste unique que nous avons. Donc, les méthodes que nous avons créées dans l'interface. Nous allons donc simplement implémenter l'interface de pile. Et en haut à droite, toutes les méthodes. Écrivez-les simplement de E en ajoutant des méthodes implémentées et les méthodes. Maintenant, la première chose que nous allons faire est de créer la liste uniformément liée à l'extérieur avant le constructeur, liste
privée à lien unique de D. Maintenant, créons un constructeur, liste
publique à lien unique basée sur cela. Et en cela, dans ce constructeur sera simplement. Donnez une selle définie vous nouvelle chose, la liste liée. Et bien sûr, nous avons ici comme ça. Donc c'est ça et c'est les séparer. Donc c'est notre constructeur. Passons maintenant à la science. Tout en utilisant la taille. Nous pouvons simplement retourner la liste unique liée en utilisant est vide. Nous pouvons également utiliser la méthode isEmpty disponible et le reflex. Donc, nous allons simplement retourner tout ce qui est vide. Maintenant, ce que nous faisons ici, c'est que nous avons créé en tant que liste liée. Et liste liée. Nous avons toutes les méthodes. Nous avons inséré la tête, insérer, retirer, obtenir, et bien sûr la taille et vide, sorte que nous pouvons les utiliser simplement. Et notre pile basée sur la liste simple liée, parce que la taille et la valeur Empty sont les mêmes. Quand on ira à Bush, je vais aller de l'avant. Nous utilisons donc la poussée de la tête ou de l'insert à la tête et la classe LinkedList unique. Donc, pour ce faire, nous disons simplement SLL, mais insérons à ce que nous avons ici. Et c'est fondamentalement maintenant. Tout d'abord, utilisons un bloc try and catch. Essaie donc si quelque chose s'est passé, attrape-le. Et cela devrait être la liste vide. Si elle est vide. Si la liste est vide, alors ce que nous allons faire est de lancer la nouvelle exception que nous avons créée, qui est l'exception de pile. Donc, en cela, nous créons une nouvelle exception disant que la pile est vide. Maintenant, c'est le piège. Revenons pour essayer d'écrire du code ici. La première chose que nous allons faire est de créer l'objet. Et nous devons aussi retirer du chapeau. Donc, dans cette pile, comme nous l'avons dit précédemment, nous ajoutons le premier et le dernier sorti. Et on peut dire que N est le premier sorti. Nous devons donc aller de l'avant. Et c'est le même moment si on veut pomper, on doit sortir de la tête. Donc point SLL, retirer du chapeau. Maintenant, après avoir enlevé cela, nous revenons simplement. Et on en a fini avec le pub. Allons juste à la méthode de connexion qui est top. Donc, comme nous l'avons fait et essayer d'attraper, attraper l'exception de liste vide. Si nous avons une exception militante, alors nous lançons une nouvelle exception de pile. Et nous dirons que la pile est vide. Maintenant, si ce n'est pas le cas, alors nous sommes juste un objet pour retourner et utiliser la méthode get de SLL, mais obtenir de l'aide et retourner cet objet. Donc c'est tout pour la méthode supérieure. Et maintenant, nous avons fini avec toutes les méthodes à venir et créer une classe pour les utiliser. Nous allons le nommer pile basée sur SLL. Donc, dans cette classe, comme d'habitude, nous avons notre méthode principale et qui est créé SLL entier sombre basé et mince SLL b égal à un nouvel entier de pile. La première chose que nous allons faire est de créer une poussée, pousser un élément qui est un, soit le régime Bush et Bush. Allons de l'avant et imprimons la taille, la taille et ce code. Voyez ce que nous obtenons. Donc on en a trois. Maintenant, nous avons oublié de créer la méthode toString. Nous pouvons simplement le créer après cette méthode. Et cette méthode sera simplement la GDT. Bien. Maintenant, revenons ici et exécutons ce code une fois de plus. On en aura trois. Maintenant, si nous allons de l'avant et imprimer SLM b va obtenir trois contre un, puisque nous poussons dans la pile. Donc tout d'abord, on en a poussé un, puis on pousse deux, puis on pousse trois. Donc, en les mettant en D. Maintenant, si nous pompons à partir de cela, nous obtiendrons SLL B que nous obtenons le numéro trois ici disant que l'exception non gérée, nous devons jeter cette exception ici, jette l'exception et exécuter ce code en obtiendra trois. Maintenant, si nous continuons à l'imprimer une fois de plus, nous en aurons une. Vérifions s'il est vide. C' est vide, il devrait retourner false puisque nous avons deux éléments. Et enfin, utilisons la méthode des fesses. Donc SLL v point. Et nous devrions obtenir le numéro 222 est la première position. Donc, c'est tout pour la pile basée sur la liste unique liée. Maintenant, nous avons implémenté la pile en utilisant trois méthodes. Le premier est en utilisant le tableau, et le second était en utilisant la pile Java intégrée. Et enfin, nous utilisons une liste unique liée pour implémenter la pile. Donc c'est tout pour cette vidéo. Rendez-vous à la prochaine.
17. Liste de doublement liée, partie 1: Passons à la liste doublement liée. Et la liste doublement liée est une structure de données liée qui se compose d'un ensemble de chacals de lien appelés nœuds. Chaque nœud contient trois champs permettant de lier des champs au nœud précédent et au nœud suivant. Et bien sûr, un champ de données. Ainsi, par exemple, ce nœud contient un champ de données pour stocker des données. Et par exemple, supposons que nous ayons une variable appelée b et deux noeuds, deux champs pour pointer vers le noeud précédent et vers le noeud suivant. Et bien sûr, nous avons dans le premier champ, dans le premier noeud, aucun, et dans le dernier champ, le dernier noeud et non. Et ici, nous avons la tête pointant vers le premier noeud et le trader pointant vers le dernier noeud. Alors allons de l'avant et mettons en œuvre ce programme ici. Donc, créons un nouveau paquet et nommez-le doublement LinkedList. Et dans ce paquet, commençons par créer notre interface de position. Comme nous l'avons fait avec une liste à lien unique. Nous avons notre position d'interface. Et dans cette position, il sera générique, type générique. Nous n'avons qu'une seule méthode, obtenir élément. Donc c'est notre classe de position. Créons une autre classe. Je noterais que la classe est nommée D, car c'est une liste doublement liée, le noeud. Et dans ce cours, laissez-moi juste, ouais, ok, alors nous allons mettre en œuvre l'interface de position. Donc, en écrivant simplement la position des impléments. Et bien sûr, vous n'avez pas à remplacer cette méthode. Obtenir l'élément. Donc, créons une variable en dehors de ce nom de l'élément. Nœuds. Nous avons besoin de deux nœuds ici puisque nous travaillons avec le précédent et le suivant. Alors appelons-les, désignons le précédent. Et ensuite. Maintenant, dans cette méthode, ce que nous allons retourner l'élément, nous retournons simplement l'élément ici. Dans ce cas. Maintenant, créons d'autres méthodes. Par exemple, nous devons obtenir le nœud précédent. Donc, ce sera l'oubli public et aussi d'être de type d nul. Et ce précédent. Dans ce cas, retournez simplement le rayon, passez ensuite. Donc, dans ce cas, le nœud au nœud suivant, et nous retournons simplement suivant. Maintenant, nous pouvons vouloir configurer le noeud précédent et le noeud suivant. Donc, créons une méthode pour les configurer. Donc, ce sera de type void puisque nous sommes juste en train de configurer ces nœuds. Donc, définissez précédent. Et nous devons lui donner son nom, son précédent. Et il suffit de définir cette troisième précédente variable locale totale
IE précédente pour être égale au podomètre à dévaluer entré par l'utilisateur pour le programme. Donc, il sera égal à précédent. Et nous devons créer une autre méthode, méthodes, méthode à définir ensuite. Comme nous l'avons fait dans les deux précédents, serait ce point à côté égal à suivant. Donc maintenant, nous avons fini de définir et d'obtenir le précédent et le suivant. Maintenant, nous avons encore une seule méthode qui est de définir l'élément. Donc, ce sera un élément vide et un élément. Et cet élément égal aux éléments. Et maintenant on en a fini avec ce cours. Allons de l'avant et créons une classe d'exception. Donc, comme d'habitude, tout d'abord, nous avons l'exception de liste vide. Donc, je voudrais la liste pourrait être vide. Donc, créons une exception. Mais cette exception de liste vide. Et il va juste étendre l'exception en créant le constructeur et le message d'exception de liste et ce message. C' est donc la première exception. Maintenant, nous allons créer d'autres exceptions et nous en parlerons plus tard. Donc, nous avons également une exception de position non valide. Et ce sera la même chose. Il étend l'exception. Et donc la dernière exception que nous allons créer est l'exception de violation de limite. Donc, ces exceptions nous permettront de détecter plus facilement et nous allons mettre cette structure de données de liste doublement liée. Donc exception de violation de frontière. Et bien sûr, je devrais étendre la classe d'exception. Le constructeur. Le constructeur. Maintenant, avec fait avec ces classes d'exception. Et nous pouvons aller de l'avant et travailler sur notre liste à double lien. Comme nous l'avons fait avec une liste à lien unique, nous avons créé une interface pour lui nommer la liste S. Donc, ici, nous allons créer la liste D car il s'agit d'une liste doublement liée. Donc, nous allons créer cette liste D, puis nous allons remplacer toutes les méthodes
de cette interface dans notre classe de liste WMA. Donc, nous le faisons dans la prochaine vidéo.
18. Liste de doublement liée, 2e partie, partie: Maintenant, avant de créer notre classe de suppression, comprenons ces exceptions. Donc, tout d'abord, nous avons l'exception de liste vide. Et cette classe dans cette exception, qui va vérifier si la liste est vide ? Donc, nous ne lancerons cette exception que si la liste peut être vide. L' autre exception, l'exception de position inversée. Ainsi, par exemple, si l'utilisateur entre un nœud, il n'est pas dans la liste, alors nous allons lancer cette exception de position non valide disant que le nœud
ne fait pas partie de la liste ou que nous ne l'avons pas et identifier le neigé. Et enfin, l'exception de violation de limite. Donc, en passant par la liste, par exemple, si nous allons utiliser une méthode suivante, nous allons passer à travers le nœud et nous finissons avec le dernier nœud. Et nous avons utilisé une fois de plus, la suivante. Ensuite, nous allons lancer cette exception de violation de limite, puisque nous n'avons aucun nœud après le dernier. Donc ce sont nos trois exceptions, les lunettes. Et allons de l'avant et créons la classe de dénote. Donc dans ce cas, c'est le Denote, la liste, désolé. Et cette classe sera T. Et cela crée une méthode. Tout d'abord, nous avons, comme d'habitude, Booléen est vide, est vide. Et nous avons la méthode pour obtenir le premier élément, le premier nœud. Donc, il sera de type dénote T et ce sera le premier. Donc ici, la liste pourrait être vide. Donc, ce que nous allons faire est de lancer l'exception de liste vide. Maintenant, nous pouvons également créer une méthode pour obtenir le dernier nœud dans la liste. Et bien sûr, il pourrait aussi être vide. Donc nous jetons ceci jusqu'à la succession une fois de plus. Maintenant, laissez-moi voir ce qui se passe ici. Le corps de la méthode, je suis désolé, caché. Nous devons créer l'interface et la classe mathématique de l'interface. Et a annulé ça. Créons la méthode à côté pour obtenir le nœud suivant. Donc nous n'avons rien pour obtenir le prochain. Appelons-le ensuite. Et il acceptera un dénote. Appelons-le d. Et après l'avoir accepté, acceptant ce nœud, nous avons deux problèmes ici. Tout d'abord, ce nœud peut ne pas être l'un des nœuds de la liste. Alors ce qu'on va le jeter. Exception de position non valide. Puisque cette position que nous avons entrée ici pourrait être invalide dans ce cas, nous allons lancer cette exception. Maintenant. Nous pouvons également rencontrer une exception de violation de limite, puisque nous allons essayer d'accéder au nœud suivant. Supposons que ce nœud soit le dernier, donc nous ne pouvons pas accéder au nœud suivant. Donc, pour corriger cela, nous dessinons simplement l'exception de violation de limite. Maintenant, nous avons aussi le précédent. Donc nous avons le même ADN. La fin lance, exception de variation non valide et limitée. Après cela, nous avons deux méthodes à supprimer et à remplacer. Donc, tout d'abord, créons le mouvement. Donc, nous allons supprimer un élément. Donc c'est div. Donnons-le un nom, vous avez déménagé, et donc nous allons le supprimer du nœud. Nommons un deem et supprimez-le. Peut-être que ce nœud n'est pas l'un des nœuds de la liste. Donc, ce que nous allons lancer est l'exception de position non valide. Et nous allons lancer la même chose si nous voulons remplacer, par exemple. Remarque ici peut ne pas être également l'un des nœuds de la liste. Donc, nous allons jeter en position violette ensuite. Maintenant, passons à insérer. Nous pouvons insérer au premier abord, insérer enfin, et insérer avant un nœud, et insérer après. Revenons à notre photo ici. Par exemple, nous pouvons insérer ici entre a et b. Nous pouvons
donc utiliser insert avant b ou insert après a. Et vous pouvez également répondre au premier abord et insérer dernier. Alors revenons en arrière et créons ces méthodes. Tout d'abord, créons le nœud et insérez d'abord. Et nous allons accepter et l'élément d. Ensuite, la même chose à la classe, insérer le dernier E, et nommez-le E. Ensuite, nous avons insérer avant un noeud et insérer après un noeud. Insérez donc maintenant le nœud. Et appelons-le, insérez avant. Maintenant, nous allons les accepter. Donc, nous allons savoir quel nœud insérer avant. Et nous allons l'accepter ici. Nommons un d et bien sûr, l'animal qui concerne à insérer. Donc, c'est l'élément d. Maintenant dénoter qui est donné à nous, pourrait être et valide. Donc, bien sûr, vous allez lancer l'exception de position inviolée. La même chose avec l'insertion à un nœud spécifique, insérez après le sname il D, D, E et E aura le lancer de l'exception de position non valide une fois de plus. Donc c'est tout pour la classe. Voilà toutes nos méthodes pour l'instant. Et dans la vidéo suivante, nous allons les implémenter dans la classe de liste à double lien.
19. Liste de doublement liée, partie 3: Donc, nous avons maintenant sur la méthode dans la liste de l'interface D. Allons créer la classe doublement LinkedList. Liste donc doublement liée. Et dans cette classe, nous allons implémenter cette interface. Et bien sûr, nous allons remplacer toutes les méthodes pour me laisser utiliser cela et ajouter des méthodes non implémentées. Donc nous allons avoir toutes les méthodes ici. Tout d'abord, créons notre construit et quelques variables à l'extérieur. Donc, comme d'habitude, nous avons la taille et nous avons deux nœuds. Maintenant, le D, appelons-leur l'en-tête et la remorque. Maintenant, nous pouvons créer notre constructeur. Et dans ce constructeur va configurer notre en-tête et l'échec et le suicide. Donc la taille. Ensuite, nous avons en-tête et Taylor. Revenons à cette image. C' est notre en-tête, et ce sont nos données. Tout d'abord, nous n'avons aucun nœud dans cette liste doublement liée créer l'en-tête et le trader, l'en-tête devrait pointer sur la remorque et le tailleur devrait pointer sur l'en-tête. Donc, ici, nous pouvons dire que cette boîte indique au tailleur et l'échec, la première boîte devrait indiquer à la tête. Donc, revenons en arrière et voyons comment pouvons-nous mettre en œuvre cela. Tout d'abord, notre en-tête sera égal au nouveau noeud E, noeud. Nœud E. Et tout d'abord, nous avons, comme nous l'avons dit, dans la classe des postes, laissez-moi voir où notre dénote. Nous avons élément précédent et suivant, mais oublié de créer notre construit. Donc c'est créé. Et dans ce cas, le constructeur sera de trois paramètres. Il faudra d noeud, noeud D. Nommez-le savonneux précédent et l'élément e. Et enfin, le d néant, c'est le noeud suivant. Et bien sûr, mettons-les ici. Donc, l'élément sera égal à a, précédent serait égal à b. Et enfin, suivant. Et bien sûr, il l'a identifié. Maintenant, nous pouvons revenir à notre note, et ici nous devons créer le prochain et l'élément précédent. Donc, tout d'abord, puisque nous n'avons pas de précédent. Ensuite, nous les mettons à Null. Et après cela, nous allons créer notre bande-annonce. Maintenant, je vais taylor, Comme nous l'avons dit, il devrait indiquer à l'en-tête. Donc aucun, aucun. Et nous avons également dit que l'en-tête devrait également indiquer sur mesure. Cependant, ici, lors de la création de l'en-tête, nous n'avons pas été adapté à. Donc, au lieu de cela, nous allons le signaler ici. En-tête qui s'est assis ensuite. Et on va mettre la bande-annonce à côté. Maintenant, nous avons fini avec cette méthode et le constructeur, je veux dire, et nous pouvons travailler avec notre méthode. Donc, tout d'abord, nous avons la taille va simplement retourner la taille. Ensuite, nous avons le SMT et comme d'habitude déterminé taille égale à 0. Maintenant, nous pouvons travailler avec nos méthodes plus compliquées. Donc, tout d'abord, nous avons la première méthode et comme nous l'avons dit, lors de l'extraction d'un nœud, il pourrait lister, pourrait être vide. Donc, pour être du côté sûr, nous lançons cette exception de liste vide. Maintenant, créons cette méthode. Donc, nous avons ici, nous ne voulons pas extraire le premier dénote. Donc, tout d'abord, nous allons vérifier si elle est vide pour que la liste soit vide, alors nous allons lancer une nouvelle exception vide. Et dans ce cas, nous allons dire que la liste est vide. Ce n'est pas le cas. Ensuite, nous allons simplement retourner le premier mode. Comment accéder au nœud dispersé ? Retournons à la broche. Et nous pouvons voir que chaque fois que nous avons quelques noeuds dans
la liste, le premier, l'en-tête va pointer au premier noeud. Et le trader qui va souligner à ce dernier noeud. Donc, l'axe, le premier noeud, nous allons simplement, revenons en arrière. Et dans Eclipse, nous retournons simplement tout ce que nous avons à l'en-tête qui se trouve à côté du nœud suivant de l'en-tête est le premier nœud de la liste. Et la même chose ici. Tout d'abord, nous allons vérifier, alors laissez-moi copier ceci et collé ici. Si ce n'est pas le cas, alors nous allons simplement retourner jailer qui obtient le nœud précédent. Donc, après avoir obtenu le précédent, revenons à cette image et vérifions. Donc, nous avons notre caravane. Le dernier nœud de la liste est celui qui précède plus tard. Donc, tout ce que le Taylor signale est le dernier noeud de cette liste. Maintenant, revenons ici et nous allons travailler avec les autres méthodes plus tard dans les prochaines vidéos.
20. Liste de doublement liée, partie 4: Passons maintenant à la suivante, précédente et supprimer, remplacer et ainsi de suite. Donc, ici dans la méthode suivante qui pourrait lancer une exception de position non valide et l'exception de violation de limite. Voyons donc ce qui est une exception de position invalide est pour nous. Ainsi, par exemple, si le nœud saisi est nul, événement a n'est pas une position valide. O, bien sûr, si nous entrons dans l'en-tête de nœud ou la remorque, il n'y a pas non plus une position valide. Et enfin, si ce noeud pointe vers un noeud suivant ou précédent, comme nous pouvons le voir ici, tous les noeuds de cette liste devraient indiquer au noeud suivant et au noeud précédent. Seuls l'en-tête et la remorque sont autorisés à pointer sur un seul nœud. Donc, l'en-tête est en train de souligner que le premier et le Taylor à la dernière. Et ici, nous ne pouvons en avoir aucun. Et la même chose ici. Maintenant, revenons ici. Donc, créons une autre méthode qui vérifie pour nous les positions invalides avec lesquelles nous pouvons travailler. Donc, il est créé avant cette prochaine méthode. Ce serait privé puisque nous l'utilisons uniquement dans cette classe. Alors appelons-le vide privé. Et il ne vérifiera que la position et la position de ce t néant. Et bien sûr, il devrait à travers l'exception de position invalide. Tout d'abord, on va vérifier si D n'est pas. Ensuite, nous allons lancer la nouvelle position invalide. Exception de poste non valide. Laissez l'exception de position. Et bien sûr, nous allons écrire guéri que null n'est pas une position valide. Et laissez-moi copier ceci et coller deux fois. Et si D est égal à l'en-tête, alors nous allons également lancer l'exception de position non valide, mais en disant que l'en-tête n'est pas une position valide. Et aussi la bande-annonce va jeter jailer n'est pas une position valide. Donc, la dernière chose que nous allons vérifier est si ce
point D point suivant est égal à null. Ou le précédent est également égal à null, alors cela ne fait pas partie de la liste. Donc nous allons vous jeter position invalide. Exception, en disant que le nœud ne fait pas partie d'un accord est. Maintenant, nous en avons fini avec cette méthode. Nous pouvons l'utiliser dans nos méthodes ici. Donc, tout d'abord, avant de faire quoi que ce soit, nous devons vérifier la position. Donc, il appelle cette méthode. Donc, si quelque chose s'est produit comme si une exception de position non valide de bon va simplement le jeter en utilisant cette position chap. Donc, il va entrer pour le vérifier. Et si rien ne se passe, alors vous pouvez travailler comme d'habitude. Et laissez-moi voir quel est le problème que nous devons revenir. Bien sûr, nous allons le retourner à la fin. Donc, tout d'abord, puisque nous allons obtenir le prochain noeud, abord, nous allons vérifier si le prochain est plus tard. Si la porte voisine est une queue, alors nous pouvons obtenir le noeud suivant. Sends Taylor ne fait pas partie de la liste. Donc, nous allons lancer la nouvelle exception de violation de frontière, disant que cela ne peut pas se déplacer comme la dernière note. Donc, lorsque cette condition est satisfaite, alors nous sommes au dernier nœud et nous ne pouvons pas accéder après cela. Ce n'est pas le cas. Ensuite, nous retournons simplement le suivant. Maintenant, nous allons faire la même chose avec la précédente. Mais nous allons vérifier si le nœud précédent est l'en-tête. Et dans ce cas, nous ne pouvons pas y accéder car il ne fait pas partie de la liste. Donc, tout d'abord, nous devons vérifier la position. Si tout va bien, alors on peut continuer. Si précédent est égal à dans ce cas, l'exception de violation de limite que nous écrivons, une exception de violation de limite de nouvelle ligne indiquant que ne peut pas déplacer le premier nœud. Et ici, ce n'est pas le cas. Il suffit de retourner les études précédentes, les méthodes suivantes et précédentes. Continuons avec notre méthode de suppression. Revenons en arrière. Et supposons que nous devons supprimer ce nœud. Dans ce cas. Tout d'abord, nous devons couper ces pointeurs d'ici et d'ici et créer de nouveaux pointeurs. Donc, un va pointer en mer. Et C va pointer vers un. Alors implémentons ceci dans notre code. Pour supprimer, nous créons simplement. Tout d'abord, nous devons vérifier la position du nœud. Si tout fonctionne correctement, alors nous pouvons continuer. Donc, nous devons revenir. Créons un retour d'objet. Et dans ce cas, ce sera l'élément dot-point. Maintenant, avant de définir ces champs dans non, nous devons définir ces deux champs dans a et C pour pointer l'un sur l'autre. Alors, comment on accède à un ? Nous pouvons simplement écrire ce noeud d d point obtenir précédent. Donc, quand on dit qu'il n'a pas été précédent, on obtient un et on doit mettre un pour montrer en mer. Alors, comment faites-vous ça ? Nous pouvons simplement écrire d qui obtient précédent. Maintenant, en utilisant Get Previous, nous avons un. Ce que nous allons faire est de mettre ce champ en évidence en mer. Alors ça s'est assis ensuite. On va mettre le prochain. Et comment pouvons-nous accéder c par a, le dicton que B, qui obtiennent ensuite. Alors qu'est-ce que nous devrions écrire ici, c'est la vitesse ou DDL GetMax, je suis désolé. Pas la prochaine. Laisse-moi le répéter. Tout d'abord, nous avons accédé à une utilisation DDL obtenir précédent après avoir accédé à la précédente. Ici. Après avoir accidentellement dit ceci a, nous avons simplement défini ce champ pour montrer le noeud après B, et nous y accédons en utilisant B soit get next. Maintenant, nous devons encore définir ce champ pour être pointé à un. Alors, comment le faire avec simplement accéder à l'élément suivant, le noeud suivant. Et nous devrions mettre le précédent à la précédente. Donc, ce que nous avons fait ici, c'est que nous accédons à l'élément suivant, le nœud suivant. Donc, en utilisant le point get next, nous avons C. Et ce que nous devrions, ce que nous devrions stocker ici à la précédente. Donc, nous allons mettre précédent pour être en pointant à un et ce qui est un ? A est d, D obtiendrait précédent. Maintenant, après avoir fait cela, nous pouvons simplement définir à côté de D égal à null et le précédent égal à null, et simplement décrémenter la taille et dissuader le nom de retourner. C' est ainsi que nous supprimons le nœud de la liste. C' est un peu compliqué quand il s'agit de régler et d'arriver ici. Mais si nous y travaillons étape par étape, ce sera simple. Donc, nous allons continuer avec remplacer dans la prochaine vidéo.
21. Liste de doublement liée, partie 5: Maintenant, continuons avec la méthode replace. Tout d'abord, nous devons vérifier si ce nœud est valide. Donc, nous allons utiliser la position de chat. Le poste est valide. Ensuite, vous pouvez continuer. Tout d'abord, nous devons créer un objet, retourner un élément à retourner, et retourner tout ce que nous avons à D. Ensuite, nous allons définir l'élément à deux être égal à e. Et ici, nous avons quelque chose qui manque dans le remplacement méthode. Retournons à notre déteste et réparons ça. Lorsque nous avons besoin de remplacer, Nous devons entrer un nœud et un élément. Retournons ici et réparons ça. Maintenant, nous pouvons ajouter cet élément ici et retourner tout ce que nous avons l'objet à retourner. Maintenant, commençons par la méthode insert. Tout d'abord, nous avons l'insert en premier. Alors laissez-moi créer le nœud. Nous avons l'élément ici dans le paramètre. Donc, tout ce que nous devons faire est de créer ignoré et nommez-le dans votre dénote. Dans ce cas, le serait égal à l'anode et à la note. Et cela prendra trois paramètres. Laisse-moi revenir à cette photo. Supposons qu'il soit nécessaire de créer un nouveau nœud ici. Ce nouveau noeud devrait souligner à ce noeud a, et a devrait également indiquer à ce noeud que j'ai besoin de créer. Et bien sûr, l'en-tête devrait pointer sur le nœud nouvellement ajouté. Au lieu de souligner à cela un rien. Laisse-moi retourner ici. Tout d'abord, lorsque nous avons besoin de créer ce nœud, il devrait pointer à l'en-tête. Ensuite, l'élément e, puis souligner tout ce que nous avons eu un get. Suivant. Après avoir obtenu ce nœud, nous devons réparer les flèches. Maintenant. Nous avons la flèche pointant d'ici à l'en-tête. Alors laissez-moi corriger cela en tapant simplement head.next. Maintenant, j'ai accédé au premier nœud ici, qui est un Et que dois-je faire est de définir précédent pour être égal au nouveau nœud. Donc, en disant simplement ensemble précédent. Et dans ce cas, soit cela, soit nous pouvons simplement dire que nouveau V rien. Maintenant, nous devons également définir l'en-tête le suivant. Donc, au lieu de souligner le a, il devrait pointer sur le nouveau nœud. Alors comment cela s'est assis ensuite et assis à côté de la nouvelle dénote. Enfin, nous devons incrémenter la taille. Et bien sûr, retournez ce nouveau dénote. C' est tout pour l'insert en premier. Continuons avec la dernière insertion. Une fois que vous comprenez l'idée est la même pour la fin, avant et après. Donc, tout d'abord, nous devons créer le nœud, le nouveau dénote pour être égal à indiquer. Et ici, quand nous voulons y répondre à la dernière position, nous devons mettre en place notre noeud en pointant à d de l'
une de cette action et au Taylor de l'autre direction. Donc, nous pouvons simplement accéder au nœud en accédant simplement au
point de remorque obtenir élément précédent est e. Et maintenant nous allons modifier les flèches. Tout d'abord, le précédent. Donc, dans ce cas, c'est ce noeud D. Et quand nous avons besoin, quand nous y
accédons, nous pouvons simplement définir le suivant pour être égal à la nouvelle dénote. Ensuite, nous devons définir le précédent du Taylor au lieu d'être souligné à d, il devrait indiquer au nouveau nœud. Donc, la nouvelle précédente dénote. Et enfin, incrémenter la taille détermine ce nouveau dénote. Maintenant, continuons avec insert avant. Ici, nous acceptons les inconnues. Nous devrions donc vérifier la position de cette connaissance. Et ensuite, on pourra travailler. Permettez-moi de revenir à cet exemple. Supposons qu'on en ait besoin, laisse-moi prendre ça. Et supposons que nous ayons besoin d'insérer le noeud. Voici notre nouveau noeud. Et nous devons le mettre en place entre B et C. Donc ici, C devrait souligner dans ce domaine, et bien sûr ce domaine devrait également indiquer en mer. Et la même chose avec B. Donc, quand nous créons ce nouveau noeud, donc c'est le nouveau d néant. Laisse-moi l'écrire ici. Mu. Et avec quelques nouvelles dénotent et minimisent l'avant. Donc ici, nous avons notre nouveau dénote, et ce noeud est le noeud d. Donc ici nous obtenons le noeud D Et nous devons insérer le nouveau noeud avant ce D. Donc, supposons que ce noeud soit C0 et nous devons insérer avant. Donc, tout d'abord, nous devons modifier les flèches et créer le nouveau nœud. Donc, laissez-moi cliquer sur Créer et nouveau indiquer D. D, désolé. Nouveau dénote sera égal à nouveau V néant. Et tout d'abord, il devrait souligner au B et C. Donc, à partir de la première position, il devrait souligner que d point obtenir précédent. Ensuite, l'élément e, Et puis il devrait indiquer à D. Maintenant, modifions les flèches ici. Ce nœud doit indiquer dans ce champ. Donc, pour accéder à ce nœud, nous pouvons simplement dire que e point obtenir précédent. Après avoir obtenu le précédent, nous devrions définir le suivant et le précédent pour être égal à la nouvelle, indiquer. Le devrait. Nous devrions définir le précédent de D pour être égal à nouveau dénote aussi. Enfin, incrémenter la taille et tourner ce nouveau dénote D. Maintenant, faisons la même chose avec l'insert après. Donc, ici, cette position après que créer le nouveau dénote, le nouveau nœud égal à indiquer. Et revenons à cet exemple. Supposons que nous ayons besoin de modifier cette liste en ajoutant un nouveau nœud entre B et C. Mais nous utilisons l'insert après, désolé, en le modifiant en utilisant l'insert après B.
Et c' est, ce que nous devrions faire, est une fois que nous avons mis en place le nouveau indiquent, il devrait pointer à ce noeud, puis le suivant. Donc, il devrait souligner que l'élément est e et d, mais obtenez ensuite. Alors maintenant, définissons le prochain de ce nœud, qui est dans ce cas. Et on peut y accéder en disant d dot get next. Maintenant, nous avons accédé au deuxième nœud et nous devons définir pour être égal à nouveau dénote. Ensuite, la nouvelle dénote, incrémenter la taille et retourner nouveau nœud. Donc c'est tout pour insérer avant et insérer après. se voit dans la vidéo suivante.
22. Liste de doublement liée, partie 6: Nous avons toujours la méthode toString, mais ce sera très compliqué puisque nous avons insérer avant et insérer après, Show et nous devons créer un milieu StringBuilder
pour tenir compte de l'insertion avant un élément et après un animal. Donc, pour être un peu compliqué, alors créons notre classe tribale et travaillons dans ce nom de classe à la démo DLL. Et il comme d'habitude, notre méthode principale. Créons notre liste doublement liée, type entier, et listes DLL de nommage doublement liées. Et voici, ajoutons quelques valeurs. Donc, insérons d'abord et valons-en un. Insérer le dernier. Insérer après le premier noeud. Insérer après quoi. C' est le premier. Alors DLL Dieu d'abord. Et nous devons le stocker vers l'avant. Insérer des points après, avant. Donc nous voulons stocker avant la dernière. Et maintenant, nous avons quelques erreurs. Voyons voir. Nous avons des exceptions non gérées pour lancer la classe d'exception. Et maintenant, nous allons imprimer, par
exemple, supprimons un élément. Donc, pour l'enlever, c'est l'impression. Nous supprimons, supprimons l'élément, une DLL, celle avant le dernier élément. Donc, le précédent du dernier élément. Et dans ce cas, laissez-nous imprimer. Nous sommes enlevés deux. Maintenant, comme nous pouvons le voir ici, tout d'abord, nous sommes entrés dans un que dans cinq. Ensuite, après la première position, après le premier nœud, nous sommes entrés pour. Donc ici, nous en avons quatre et ensuite nous devons le faire. Donc, quand nous devons supprimer l'élément avant le dernier, nous allons supprimer celui-ci, et nous avons toujours 145. Donc, nous allons imprimer la taille DLL, mais la taille, nous obtenons maintenant trois. Comme vous pouvez le voir, taille si trois, est-ce vide, ce n'est pas. Dlls dot est vide. Tu as des plis. Maintenant, si nous voulons imprimer les éléments de cette liste. Donc, nous pouvons créer une boucle for commençant par i égal à 0, égale à la taille du point DLL. Mais depuis DLL, cette taille peut changer lors de la suppression, l'ajout. Commençons donc par une variable en dehors de l'écoute de taille moyenne égale à la taille. Et dans ce cas, la limite sera de la taille. Maintenant, nous allons créer un signe à l'extérieur. Donc, indiquer D égal à a pour être égal à DLL. Mais d'abord, et nous imprimons l'élément. Et avant cela, c'est sur la même ligne. Et puis chaque fois que nous entrons dans cette boucle, nous devons modifier le B égal aux deux suivants, b égal à d, que suivant. Maintenant, pendant l'exécution de ce code, quelque chose pourrait arriver. Mettons-le dans un bloc try and catch. Et si une exception de tout type, il
suffit de le jeter de cette boucle pour. Maintenant, allons de l'avant et courons. Ce code obtiendra 1425. Alors laissez-moi supprimer un élément ici. Par exemple. Comme nous l'avons fait avant. Le LL supprimer le point jaune précédent. Pourtant. Alors allons de l'avant et exécutons ce code et voyons ce qui va se passer avec le passage à, et nous allons finir avec cette liste 145. Maintenant, nous pouvons également utiliser cette méthode dans la liste doublement liée et créer une méthode ToString. Mais j'ai trouvé cela plus facile lorsque nous l'utilisons dans la classe principale puisque nous créons la liste en même temps que l'impression. Donc c'est tout pour la liste doublement liée. Il est beaucoup plus compliqué que la liste unique liée, mais il est plus puissant en termes d'insertion et de suppression de quand nous le voulons.
23. Triter l'introduction: Considérez que vous avez une liste d'entiers tels que cette liste. Et vous voulez qu'ils soient triés du plus bas au plus haut. Hé, tu peux utiliser le salage. Et il y a en fait plusieurs algorithmes de tri et nous parlerons de certains d'entre eux. Donc à l'intérieur par tri d'insertion. Le tri d'insertion est un algorithme de tri simple qui fonctionne la
même manière que vous avez vu jouer aux cartes dans vos mains. Le tableau est virtuellement divisé en une partie triée et non triée. Les valeurs de la pièce non triée sont sélectionnées et placées à la position actuelle dans la pièce triée. Et ici, nous pouvons commencer par cet exemple. Supposons que nous ayons cette liste, et cette liste sera divisée en deux parties, une partie triée et non triée. Donc, tout d'abord, notre partie triée sera le premier élément seulement. C' est donc notre première liste, et c'est la deuxième partie. Maintenant, quatre sont déjà triés car il n'y a qu'un seul élément, il n'y a qu'un seul élément dans cette liste. Et tu n'as rien à faire. Il n'y a pas d'élément à gauche de qui est supérieur à quatre, alors nous devons ajouter trois. Donc, nous en avons 43. On compare trois à quatre. Donc quatre, c'est plus grand que trois. Donc on devrait les échanger et on en aura 34. Maintenant, la partie triée de la liste est 34 et la partie non triée est ce qu'il y a ici. Et nous passerons à l'élément suivant. Nous devons comparer deux à 44, c'est supérieur à deux, puis nous les échangerons. Et la même chose que nous comparons deux avec 33 est plus grand que deux aussi. Alors échange-les encore une fois, on aura 234. Et maintenant c'est la partie triée et c'est la partie non triée, et ainsi de suite jusqu'à atteindre le dernier élément de la liste. Et puis on aura fini. Donc, l'idée générale est de comparer chaque élément avec tous les éléments à gauche. Échangez. Chaque fois que nous trouvons un élément à gauche supérieur à l'élément que nous utilisons. Alors allons de l'avant et écrivons le code. Vous allez créer une classe. Et tout d'abord, créons notre tableau entier, notre liste d'entiers. Et par exemple, nous avons cinq éléments dans ce tableau. Laisse-moi les stocker directement au 5110. Donc c'est notre tableau, et créons notre méthode. Mais appelons-le l'insertion. Et pour prendre paramètre un tableau, nommez-le au travail ici. Donc, tout d'abord, nous avons la boucle for pour passer à travers tous les éléments de 0 à la longueur listée minus1. 0 est déjà trié, donc nous n'avons pas à commencer par 0. Donc, on commence par un. Donc, notre résultat de boucle pour avec un et se termine une longueur de point moins un. Maintenant, nous allons créer un entier. Nommons la clé ID, et ce sera notre élément dans cette liste. Donc, nous allons comparer un de i. Donc voici trois à 1012 et ainsi de suite. Et nous l'avons vendu et un entier appelé jeu. Et nous aurons un autre entier sera j, i moins un à i moins un et revenir en arrière jusqu'à atteindre 0. Et ce que nous faisons ici, c'est que nous commençons ce numéro, par
exemple, que l'État fait la cause. La troisième ligne, la troisième clé d'un entier. Et nous avons pensé que ce nombre à un entier appelé clé. Et puis nous avons stocké la position que nous récupérons pour commencer, qui est la position i moins un, j i moins un. Donc nous allons nous mettre d'accord avec cette position et revenir en arrière jusqu'à atteindre 0. Donc, nous allons créer une boucle while. Alors que j est supérieur à 0 et la clé est inférieure à a de J, nous devons échanger. Donc, à dire ici, c'est que si j est inférieur, est supérieur à 0. Donc ici, dans ce cas, j est égal à un. Tellement bien. Et la deuxième condition, tandis que la clé, qui est deux, est inférieure à un de J, dans ce cas quatre. Donc nous devons les échanger. On échange. Et puis une fois de plus, nous vérifions les conditions. Nous avons j supérieur ou égal à 0. Dans ce cas, j est égal à 0. Donc, cette condition est valide. Et deux dans ce cas, nous avons ici deux et ici quatre,
donc 23, donc trois, c'est plus grand que deux. Ensuite, cela aussi valide. On doit échanger une fois de plus. Et puis nous finissons avec ceci pour la boucle puisque j sera supérieur à 0. Et dans ce cas, donc chaque fois que nous exécutons ceci pour la boucle, j sera décrémenté par un. Et ici, nous devons échanger cela, créer un entier appelé tamp. Et comme d'habitude, les échanger prendront un de j et le stockage ici, et dix et un de j A de j plus un dans ce cas. Et enfin, nous prendrons un j plus un et lui donnerons la valeur de w. donc nous les échangerons. Et maintenant nous avons dit, revenons en arrière et imprimons. Tout d'abord, nous allons imprimer le tableau tel qu'il est avant le tri. Donc, imprimez à un espace et un peu. Ensuite, effectuez cette méthode avec un a. et puis c'est imprimé une fois de plus. Pour imprimer la lumière du code
et du temps et obtiendra tout d'abord, le non salé ajouté et ensuite nous obtenons le trié, puisque nous avons utilisé la méthode d'insertion que nous avons créée ici. Maintenant, nous pouvons voir comment cela a changé à chaque fois. Nous allons donc imprimer le tableau pour créer une autre boucle pour après chaque changement en large, après l'exécution de la boucle. Et imprimez un J2, dans ce cas, un peu d'espace. Et puis, et ici, nous devons imprimer une île. Avant d'exécuter cette boucle et d'exécuter le code obtiendra ceci. Donc, tout d'abord, nous avons 32510. Nous commençons par i égal à un. Donc j'égal à onRestart, t égal à a de i, j est égal à a de 12, et j est égal à 0 dans ce cas, qui est i minus1 0. Ensuite, nous avons une boucle while qui ne fonctionnera qu'une seule fois puisque J est égal à 0, puis lu recommandé. Donc, la condition ici, il ne sera pas valide pour une autre exécution. Nous devons donc les échanger puisque les deux conditions sont remplies. La même chose avec cinq. Nous comparons cinq à maintenant. Cinq avec 25 est supérieur à deux, alors cette condition n'est pas satisfaite. N' entrera pas dans la boucle for avec simplement si et incrémentera I par un. Maintenant, nous avons le numéro un. La même chose ici. Nous allons comparer celui-ci avec chaque élément et échanger les deux nombres. Ainsi, par exemple, 15 les échangeront. Et puis 13, on les a échangé une fois de plus. Et enfin, 12 les échangent. Et enfin, nous aurons 1010 est plus grand que tous les autres éléments. Donc, il n'entrera pas dans la boucle, la boucle while, et nous aurons fini avec les deux boucles, la boucle interne et externe. Et nous pouvons imprimer, imprimer en vous disant de regarder le nouveau tableau dehors. Donc c'est tout pour le tri d'insertion. Nous explorerons d'autres algorithmes de tri dans les prochaines vidéos.
24. Trimer: Passons maintenant à un autre algorithme de tri est la sélection. L' algorithme de tri de sélection trie un tableau en trouvant à plusieurs reprises l'élément minimum de la pièce non triée et en le plaçant au début. Maintenant, nous envisageons l'ordre croissant. Nous avons également l'ordre décroissant dans lequel nous pouvons trouver l'élément maximum et le stocker au début. Et comme le tri d'insertion, nous avons deux parties. Celui qui a déjà été trié et la partie non triée. Et chaque itération de tri de sélection, l'élément minimum
du sous-tableau non trié est ramassé et déplacé vers le sous-tableau trié. Donc, prenons un exemple. Nous allons utiliser la même liste ici. Et supprimons ceci. Nous avons cette méthode, supprimez-les. Et nous garderons cette méthode ici. Mais avant, exécutons ce code et utilisons cette liste. Maintenant. Mais nous allons faire dans cet algorithme de tri est de trouver le minimum à chaque fois et de le stocker à la partie non triée, la partie triée. Donc, tout d'abord, nous allons trouver le minimum et cette liste ici nous en avons un comme le minimum, prendra ce 11 et l'échanger avec ce nombre. Quel que soit ce numéro, on l'échangera avec un. Donc, nous en avons un maintenant. Laisse-moi l'écrire ici. Nous avons donc 1253 et que l'étape suivante est de trouver le minimum et cette liste. Donc, le minimum est vrai et nous devons le stocker à cette position. Donc on va bien puisque le minimum est deux. Donc, la prochaine étape serait la même que la première. Sens, on n'a pas besoin de changer quoi que ce soit. Maintenant, nous allons regarder cette liste. Nous avons 5310 et nous trouvons le minimum ici. Le minimum est de trois. Nous devons le stocker au premier élément. Nous devons donc échanger trois avec cinq pour le suivant. Autrement dit, pour les échanger. Donc, nous allons obtenir 123510 et schéma de verre comparé ces deux nombres comme d'habitude, Trouver le minimum entre eux et le stocker au premier élément de cette liste. Et comme dix, c'est plus que cinq, alors on n'a rien à faire. Et voici notre liste finale. Alors maintenant, allons de l'avant et écrivons-le comme un code. Donc statique publique, void, sélection, paramètre d'un tableau, entier. Et dans ce cas, par
exemple, tout d'abord, nous devons stocker la longueur, la longueur pour l'utiliser dans la boucle for. Donc, nous avons ici la longueur de cette liste. A côté de notre boucle for, nous pouvons dire array.length ou les deux, la même chose. Et maintenant, nous devons trouver l'élément minimum dans la partie non triée. Donc, la partie non triée devrait commencer par i plus un. Donc, chaque fois que nous finissons avec je vais comparer et trouver le minimum et une partie de I plus un à la longueur. Et ici, nous avons n moins un. Puisque nous n'avons pas à se terminer au dernier élément, nous pouvons simplement ajouter et ici. Et la boucle interne for comparerait les deux derniers éléments. Donc, dans ce cas, stockons le minimum comme je égal à i. Et maintenant nous devrions trouver le minimum et la partie non triée. Donc, nous commençons avec i plus un, puis avec array, array.length ou et la même simplicité Maxwell. Et maintenant, nous allons comparer chaque élément pour trouver le minimum. Donc, tout d'abord, nous avons considéré que le minimum est à l'index i. l'index et un entier appelé minimum. Tout d'abord, je suis égal à 0. Nous avons donc considéré que le nombre minimum dans cette liste est à l'index 0 pour aller et regarder l'indice 00. On en trouvera trois et ce n'est pas le minimum. Nous devons donc comparer ce nombre à tous les autres. Et c'est ce que nous allons faire pour comparer un j. Dans ce cas, j est la liste de i plus un d'ici à la fin. Donc si i de j est inférieur à un tableau d'hommes, alors nous devons échanger l'indice et les hommes, ce sera en fait l'autre annexe. Donc, ce que nous disons ici, c'est que les hommes seraient égaux à, et travaillons avec cet exemple pour mieux le comprendre. Donc, tout d'abord, nous commençons par i égal à 0, i égal à 0. Nous stockons au minimum 0. Maintenant, nous regardons ce nombre et j sera égal à 0 plus un est
celui qui s'est assis avec un avec 1234 et avec quatre. Nous allons comparer tableau d'un. Si l'un d'entre eux est inférieur à tableau d'hommes et d'hommes, rappelez-vous, beaucoup xn égal à 0 et J, dans ce cas, il est égal à un va comparer T2, qui est tout hors un avec trois, juste au minimum de 0. F deux est moins de trois, alors le minimum maintenant n'est plus celui-ci. Ce n'est plus à l'index 0. C' est à l'index j, dans ce cas à l'index 1. Donc, nous allons donner une valeur minimale et nue d'un. Et la même chose qu'avant. Maintenant, J est égal à deux. Comparer J, I, J et K de deux. Nous avons I2 ici, cinq avec n'importe quel nouveau minimum, qui est un. Donc, vous devriez comparer maintenant, est cinq avec 25 est supérieur à deux, alors rien ne se passera. Ensuite, nous allons ici, nous avons comparé tableau de trois, qui est un avec L2. Donc, un est inférieur à T2. Nous devons donc donner au minimum une nouvelle valeur, la valeur d'un. Et enfin, nous avons ici à quel index, la valeur minimale comme après avoir trouvé le minimum en utilisant cette boucle pour, nous devons échanger ce minimum avec l'élément à la liste triée où nous devrions les résoudre. Donc, ce que vous devriez faire est comme d'habitude, nous allons prendre au minimum, peut le stocker dans un entier appelé amorti que. Nous changeons tout ce qu'il y a de minimum avec nos yeux. Et enfin, donnez ce tableau d'ID d'index i à l'index i, la valeur de barrage. Donc, ici, nous les échangeons et revenons en arrière et utilisons cette méthode ici. Donc, la sélection et les tableaux, tableau. Et la même chose. On les imprimera et on aura 123510. Donc, je pense que le tri de sélection est plus facile que l'insertion. Donc, en termes de compréhension, il est fondamentalement juste de trouver le minimum dans la boucle interne pour, puis l'
échanger avec le premier élément ici. Mais ici. Et c'est tout pour la sélection, donc il vous voit dans la prochaine vidéo.
25. Tri de bulles: Le troisième algorithme de tri dont nous allons parler est bubblesort. Bubblesort est l'algorithme de tri le plus simple qui fonctionne en échangeant plusieurs fois les éléments adjacents s'ils sont dans les eaux souterraines. Considérez donc cette liste de cinq éléments. Tout d'abord, nous comparons les deux premiers éléments et les échangeons puisque cinq est supérieur à un. Et puis nous faisons la même chose pour le numéro 235 est supérieur à quatre, alors nous devrions échanger. Donc c'est le nid maintenant. Et la même chose pour le numéro d'élément. 345 est supérieur à deux, elle devrait échanger. Et enfin, nous en avons 58. Et comme ils sont dans le bon ordre, huit est supérieur à cinq, alors nous n'échangerons pas. Maintenant, nous pouvons voir que cette liste n'est pas encore triée, puisque nous avons 1424 est supérieur à deux. Donc, ce que vous devriez faire est de répéter les mêmes étapes et
encore jusqu'à ce que nous atteignions la liste triée. Le pire scénario, si nous avons ici un élément, par exemple, qui disent 0. Donc, ce 0 devrait être échangé 12345 fois. Nous avons six éléments dans cette liste. Et le pire scénario est d'échanger ce 05 fois. Donc, si nous avons une liste de n éléments, nous devrions échanger n moins une fois. Donc, nous pouvons effectuer cette opération n moins une fois, et finalement vous obtiendrez cette liste triée. Alors allons de l'avant et écrire ce code pour créer une autre méthode. Ou il bulle avec un tableau d'ID de nom de paramètre comme d'habitude et fonctionnerait ici. Donc, tout d'abord, nous avons une boucle for. Comme nous l'avons dit, de 0 à n moins un, nous pouvons dire array.length. Et à l'intérieur de cette boucle pour nous avons une autre boucle pour échanger tous les deux éléments. Si le mauvais code pour nous comparons tous les deux éléments adjacents, a de j est a de j est supérieur à a de j plus un. Alors on va les échanger. Créons un tamp entier. Maintenant, ici, RAM ressort, et la même chose ici. Et si nous considérons que cette température est égale à tableau point j a j, quoi qu'il y ait à j plus un. Et puis si j plus1, le sel de valeur, et c'est notre méthode et je suis désolé, nous aurons n moins un et n moins un. Utilisons cette bulle et utilisons-la ici, et imprimez la dernière fois. Et on aura 325110. C' est avant de manger et après le salage 123510. Maintenant, notre code peut être amélioré en faisant une tâche simple. Donc, par exemple, ici, nous avons échangé les éléments ici. Première fois. Et la deuxième fois, nous n'avions besoin que d'échanger 42. Et cette liste est triée maintenant. Mais dans notre exemple, nous sommes obligés de passer par toute la liste et moins1 fois. Donc, une chose que nous pouvons améliorer est f. Et nous sommes arrivés à un point où notre boucle interne pour n'effectuer aucune tâche, alors nous pouvons assimiler parce que nous n'avons pas d'éléments à échanger. Donc, nous pouvons faire cette tâche en utilisant un booléen. Alors appelons-le swat. Tout d'abord, il est, devrait être et ne pas lui donner la valeur ici
lui donnera la valeur à l'intérieur de notre boucle externe for. échange deux sera d'abord égal à faux dans ce cas. Et si, si nous avons vomi au moins une fois, alors après être sorti de cette boucle interne vérifiera swap. Si l'échange est égal à false. Ensuite, nous n'avons pas effectué d'échange ici. Nous pouvons donc quitter la boucle for puisque notre liste est triée maintenant. Pour qu'on puisse se casser. Sinon sera l'échange continu. Et nous exécutons le code, nous obtenons le même résultat qu'avant. Mais maintenant, c'est beaucoup plus simple et cela ne prendra pas autant de temps qu'avant. Donc c'est tout pour bubblesort, l'algorithme de tri le plus simple entre tous. Et on se voit dans la prochaine vidéo.
26. Merge Sort: Passer à un autre algorithme de tri, fusionner le tri. Le tri de fusion est un algorithme de diviser et de conquérir. Alors laissez-moi aller de l'avant et créer une nouvelle classe. Sous-classe, créé nom d'insertion qu'il a fusionné. Et il discutera de la fusion tri. Tout d'abord, considérons une petite liste de quatre éléments, puis discutons d'une plus grande liste. Par exemple, considérons une liste avec quatre éléments, 2431. Ce qu'on va faire, c'est diviser cette liste en deux. Le premier que nous aurons 24, contiendra deux éléments, et le second aura les deux derniers éléments, 31. Ensuite, nous allons trier chaque liste seule. Donc 24 sont déjà triés, donc nous n'avons pas besoin de faire quoi que ce soit, il suffit de les taper. Et ici, nous en
avons 31, nous devons les échanger. C' est donc notre deuxième liste triée. Et après cela, nous devons les fusionner. Puisqu' ils sont triés. Donc, le premier élément devrait être le plus petit. Nous allons donc comparer le premier élément dans les deux listes. Ici, nous avons 21. Donc on est exploité et en écrirait un. Et puis nous allons comparer deux avec 32 est plus petit que deux, puis trois avec quatre. Même chose, orgueil. Et puis ont toujours le dernier élément de la première liste, juste quatre, et ensuite nous avons fini. Maintenant, nous allons utiliser une plus grande liste. Nous avons dans cette liste sept éléments. Nous divisons cette leçon à Troilus. Et la première liste sera quatre éléments et les trois autres éléments. Ensuite, nous faisons la même chose avec cette liste divisée en deux listes, deux, et à la même chose avec l'autre aussi. Et nous n'avons encore qu'un seul élément, donc nous allons le diviser en un et nous ferons la même chose. Et cette liste, nous avons deux éléments, diviserait en un élément et chaque liste. Et puis nous aurons 1234567 liste. Chaque liste ne contient qu'un seul élément. Après cela, nous devons les fusionner. Nous commençons par les deux éléments ici. Nous avons vingt sept et trente huit. Vingt-sept, c'est plus petit que ce que tu écrirais 2738. Même chose ici, 343982. Et puis après cela, nous devons fusionner les deux listes ici, comme nous l'avons fait dans l'exemple précédent. Donc, tout d'abord, nous en avons trois, puis nous en avons vingt sept, trente huit, quarante trois. La même chose ici. Et nous avons enfin notre liste finie salée finale. L' idée de tri de fusion est assez simple. Il faut appeler la méthode serait plus de 1s, deux jusqu'à ce que nous atteignions. Liste d'un élément, puis recréer des listes triées comme indiqué ici. Allons-y et écrivons-le maintenant. Donc, pour terminer le tri de fusion, besoin d'écrire deux méthodes. La première méthode pourrait être pensée, la fonction principale qui trie le tableau en utilisant une autre méthode. Alors écrivons-le. Vide public. Appelons-le public statique, vide. Et il acceptera un entier et pas d'index et d'index élevé. Ils représentent par où devrions-nous commencer ? Et puis si le bas est inférieur au dur, alors nous pouvons continuer. Sinon, nous n'avons pas besoin de faire quoi que ce soit. Cela signifie que faible est supérieur ou égal à élevé. Dans ce cas, nous n'avons qu'un seul élément dans la liste et nous n'avons pas besoin de le citer. Donc, nous travaillons sur si faible est inférieur à élevé. Donc, ce que nous devrions faire ici, c'est à l'indice moyen égal à faible divisé par deux. Ensuite, nous allons trier et diviser la liste en deux listes. Et puis, de sorte que la partie gauche seule et alors la droite mais peut faire cela va entrer dans notre A un, nous avons avec bas et puis trier la droite, mais à un milieu plus un. Et après cela, nous devons fusionner les moitiés triées. Donc, nous allons appeler une fusion de limite de méthode. Et il faudra comme paramètres à gauche, bas et haut. Et allons de l'avant et créons notre méthode de fusion. Donc, nous avons ici peut le rendre privé, privé, statique, vide, fusionné et comme d'habitude méthode. Et maintenant, nous devons trouver les tailles des deux sous-tableaux et être fusionnés. Donc, le premier type est limite n un égal à moins un. Et le second est N2 égal à hi moins. Maintenant, nous avons les deux tailles. Nouvelles listes. Donc, nous le nommons une liste. Ou on peut émettre à gauche et à droite. Donc, nous avons laissé, la taille et la droite. Ce second côté. Après cela, vous devez copier les données de ce tableau d'origine vers nos deux tableaux. Maintenant, pour ce faire, nous utilisons simplement une boucle for avec la limite de un1 et copions toutes les données de droite à gauche. Donc j'ai laissé égal à i. et une autre boucle pour copier les données de la partie droite du tableau dans notre liste appelée droite. Dans ce cas, nous allons commencer par un tableau de milieu plus un et plus j. Et maintenant nous avons copié les données ici. En plus, je suis désolé. Et c'est ainsi que nous copions nos données. Maintenant, nous devons les fusionner ensemble. Donc, ce que vous devriez faire est de créer une boucle while pour copier toutes les données que nous avons stockées et copiées à gauche et à droite vers notre mise à jour originale. Donc, comme nous l'avons dit dans cet exemple, après être allé à cette phase, nous devons les stocker dans la liste originale. Donc ici, nous allons comparer les deux éléments et ensuite nous allons les
démarrer et le tableau original et la même chose ici. Nous comparons ces éléments ensemble et nous obtiendrons notre liste triée. Revenons donc à notre code et écrivons une boucle while. Et la condition de cette boucle while que nous avons encore des éléments à la fois à gauche et à droite. Donc, ici, créons des entiers i égal à 0, et la même chose pour J, 0. Et créons un entier et un nom pour le nommer, qui est égal à o. maintenant, alors que i est inférieur à n, un, qui est la taille de gauche et J est inférieur à. Et deux travailleront sur cette boucle. Maintenant, tout d'abord, nous allons comparer gauche à droite de j, de i est inférieur à j, puis nous le stockons. Ce composant et la liste d'origine. Donc un serait égal à gauche. Et puis nous augmentons i. Puisque nous avons fini avec ça, par
exemple, revenons ici. Ce que nous avons fait dans ce cas, c'est que nous avons comparé la gauche de moi, 27 avec trois. F, 27 est moins de trois. On devrait le stocker ici. Maintenant, dans ce cas, 27 est supérieur à trois, alors nous devrions stocker trois dans ce cas. Sinon, nous devrions le stocker. Et à tout composant dérivé k et incrément j par un. Et dans les deux cas, nous devrions mettre en œuvre k Étant donné qu'il sera rempli de toute façon. Maintenant, après avoir terminé cette boucle while, nous pourrions avoir quelques éléments dans n'importe quelle liste. Donc, pour remplir l'original, nous devrions compléter tout ce qui reste dans nos deux listes. Donc, nous créons une boucle while. Alors que i est inférieur à N1. Le N1 si i est égal à N1. Et nous avons éclaté de cette boucle while à cause de i égal à un, alors cette boucle while ne fonctionnera pas car elle serait déjà égale ligne un. Donc, si c'est le cas, nous ne devrions acheter que ce qu'il y a dans la partie gauche et l'
incrément, incrémenter k. Et la même chose avec n2 si j est inférieur et de faire la même chose exacte, écrire incrément j et k. Donc maintenant, nous avons fini avec notre fonction de fusion. Et allons de l'avant et utilisons-le et notre méthode principale. Alors revenons en arrière. Mais avant de vérifier nos limites. Ici, nous avons à gauche et à droite et aller. Ici. On devrait commencer par un noeud. Puisque nous ne sommes pas assis avec des zéros, assis avec n'importe quel indice est ici. Et maintenant, revenons en arrière et documentés ici. Notre méthode principale. Cela crée un délai égal à, dans ce cas, quatre à 718 et utilisez-le maintenant, utilisez le tri avec une longueur 0 moins un. Et puis utilisez une boucle for pour imprimer nos éléments. Et la discorde 12478. Donc c'est tout pour la fusion. Alors il vous voir la prochaine vidéo.
27. Trimer rapide: Comme le tri de fusion, quicksort est un algorithme de diviser et de conquérir. Il prend un élément comme Pivot et partitionne le tableau autour du pivot. Il existe de nombreuses versions différentes de quicksort ce grand pivot et différentes façons. Nous pouvons choisir le pivot comme premier élément. Premier élément, élément aléatoire, ou le média. Je demanderais expliqué ce qu'est le pivot dans un instant. D' abord, nous allons écrire une liste. Alors considérez que nous avons une liste contient 101819. Et c'est donc notre liste. Maintenant, nous choisissons l'élément comme un pivot. Alors allons de l'avant et choisissons, par exemple, le dernier élément et les séparer pour le comprendre. Et ça va avoir la même chose ici. Donc, ici nous avons cette liste et c'est notre pivot. Donc, juste ici. Et ici, nous avons le premier élément. Maintenant, nous avons besoin de deux flèches, 2.2 à deux positions sur cette liste. Le premier, nous commençons par le premier élément de la gauche et le dernier élément avant le pivot. Donc, ici, nous avons notre premier, disons que c'est le premier élément et c'est le dernier. Maintenant, ce qui va faire est de comparer le premier élément s'il est supérieur au pivot, que nous avons besoin de l'échanger, nous devons nous retrouver avec une partie inférieure au pivot et l'autre partie devrait être supérieure au pivot. Donc, pour ce faire, d'abord, dix est plus grand que le pivot. Maintenant, alors va se déplacer, va passer à 80. Ici, nous en avons 80. Maintenant, on est au 8050. Donc 80 est prêt à être échangé. Maintenant, nous allons regarder 5050. 50 est plus grand que le pivot ? Non, alors on pourra l'échanger. Alors maintenant, on échange 50 avec 80. Ici aura 80, et ici nous en avons 15. Maintenant, nous changeons les positions de ces flèches. Nous avons cette flèche à 42e 30. Maintenant, la même chose fera la même chose ici. Nous avons 13, est 30 inférieur au pivot ? Oui. Alors on n'a pas besoin d'échanger. Il ira à un autre aller à 90. Et maintenant, nous allons comparer 90 à 40. 90 plus grand que le pivot ? Oui. Alors nous devons l'échanger. Est-ce que 40 est plus bas que le pivot ? Oui. Ensuite, nous devons échanger ces deux éléments, aura 90 ici. Et le, maintenant les deux flèches, appelons-les pour être en mesure de voir ce qui va se passer. Nous avons bas et haut. Maintenant, avant l'échange, ce étaient les positions et débit
bas et élevé à la position 0123 et la position haute pour. Maintenant, après avoir échangé les deux éléments, nous devons incrémenter d'un et décrémenter haut d'un. Donc, je serai en position, à cette position et bas sera à cette position. Et chaque fois que le bas est égal ou supérieur à élevé, nous pouvons savoir que nous avons fini ici puisque le bas est passé haut. Maintenant, la dernière chose que nous devrions faire est d'échanger cet élément avec le pivot. Donc, vous aurez 17 et au pivot 90. Maintenant, nous pouvons voir que tous les éléments ici plus petits que 70, et tous les éléments ici sont grands et 70. C' est donc l'idée du QuickSort. Nous pouvons effectuer ce même algorithme exact à cette liste. Nous pouvons choisir 40 comme pivot et travailler en conséquence. Et la même chose se passe ici. Et nous laissons la récursion faire le travail pour nous. C' est l'idée générale et nous utiliserons la récursivité pour pouvoir l'implémenter plus d'une fois. Maintenant a émergé. Donc, nous avons deux méthodes ici. La première méthode sera privée, entière. Renommons la partition. Il prendra les paramètres et émettra et faible. Et cette méthode prendra le dernier élément comme pivot. L' élément pivot à sa position correcte dans le tableau trié. Et cas tous les éléments plus
petits, plus petits que le pivot vers la gauche et plus grand vers la droite. Alors allons de l'avant et commençons avec cette méthode. Tout d'abord, nous avons notre pivot est créé. Maintenant, le vecteur est égal au dernier élément de cette liste. Et nous avons l'indice de plus petit élément. C' est un sname i, qui est égal à minus1. Et ce cas, nous commençons par notre boucle for. Nous commençons par bas. Tout le chemin jusqu'à. Maintenant, nous devons vérifier si l'élément actuel est plus petit que le pivot. Donc, si j est moins dans ce cas, et nous avons besoin d'incrémenter i. Un, swap et array j. Donc, échangons-le. Et égal à éditer a. Il est alors égal à, désolé, a égal à i, égal à j. Et enfin, retour à G. Donc maintenant nous avons échangé les deux éléments. Après avoir terminé avec cette boucle de mots, nous devons échanger le pivot avec un i plus un. Donc, dans ce cas, créez une autre fois et échangez les deux éléments. Comme nous l'avons dit. Ici, nous avons le pivot est à l'emplacement a. Et puis donner le bronzage deux. Maintenant, nous avons échangé les deux métadonnées en éléments, puis nous allons simplement retourner plus un. C' est donc notre méthode, la méthode de partition. Cette méthode a pris le dernier élément comme Pivot, placer l'élément de pivot à sa position correcte dans le trié à un, et place tous les plus petits à gauche et plus grands à dérivé. Maintenant, l'autre méthode est la fonction principale qui implémente ce quicksort. Et appelons-le public statique, vide. Alors qu'il faudrait trois paramètres comme d'habitude, et faible et élevé. Tout d'abord, nous allons vérifier si le débit n'est pas supérieur à élevé. Nous pouvons travailler autrement ne fonctionnera pas parce que cela n'aura pas de sens. Et nous aurons, nous allons créer un entier, laissez-nous le nommer par, par partitionnement et profondeur. Ce sera, où nous allons utiliser cette méthode que nous avons créée ici. Donc pi utiliserait la partition au bas. Maintenant, après avoir obtenu l'index, mais maintenant on devrait trier les deux, abase la partie gauche, non ? Mais donc nous allons utiliser la même méthode une fois de plus sans autre moyen de Pi moins un. Et la même chose par plus une autre façon d'écrire. Et puis nous en avons fini avec cette méthode. Vous pouvez l'utiliser. Et notre méthode principale. Donc, nous créons un tableau, par exemple, vapeur, et avec quelques valeurs 426173. Et nous appellerons la méthode de tri 0. Et en longueur moins1, puis créez une boucle for et imprimez les éléments de cette liste. Comme d'habitude, avec un peu d'espace ici, et allons de l'avant et courons. Le code obtiendra 1234567. Donc, c'est le tableau est trié tableau après avoir effectué ce QuickSort. Donc c'est tout pour Quicksort. se voit dans la vidéo suivante.
28. Recherche saut: Comme la recherche binaire, sauts Search est un algorithme de recherche pour trier les tableaux. L' idée de base est de vérifier moins d'éléments que la recherche linéaire en sautant en
avant par des onglets fixes ou en sautant certains éléments au lieu de rechercher tous les éléments de la liste. Donc, par exemple, considérons que nous avons cette liste. Nous avons 16 éléments ici. Supposons qu'on cherche le numéro 55. Ainsi, la recherche de saut trouvera la valeur de 55 en utilisant quelques étapes. abord, considérons que la taille du bloc à sauter comme depuis 16, racine
carrée de 164. Donc, tout d'abord, il va passer de l'index 0 à l'index quatre. Donc, il va sauter à 01234. Aller à cet élément par rapport à 5535 est toujours supérieur à trois. Ensuite, nous sauterons une fois de plus à n'importe lequel. La même chose ici, 21 est moins de 55, alors nous avons besoin de sauter, va sauter à 144. Et puis nous pouvons voir que 144 est supérieur à 55. Donc, nous allons revenir à 21 et effectuer une recherche linéaire de 21244 jusqu'à ce que nous trouvions notre élément au numéro 55. Nous utilisons généralement la racine carrée de longueur comme taille de bloc à sauter. Parce que dans le pire des cas, c'est la meilleure taille de pas à prendre. Alors commençons par notre code. Saute. Les principaux ij de entier et x que nous allons chercher dans cette liste. Et ici, tout d'abord, nous devons stocker la durée de la journée. Nous devons choisir notre pile. Et comme nous l'avons dit, nous allons prendre la racine carrée de n en utilisant la masse. Et cette racine carrée de masse. Par exemple, supposons que nous ayons 17 éléments, donnons US 14 et ainsi de suite comme un nombre. Donc, après avoir pris la racine carrée de et formaté en utilisant Math.Floor. Et puis puisque nous assignons un entier à converge en n, et si l'élément existe, alors nous devons trouver le bloc où l'élément est présent. Revenons donc à notre exemple. Et il 55 est entre 2144. Nous devons donc trouver ces deux éléments. Et nous avons déjà un entier, avons recréé une autre entité ou appelons-la, par
exemple, liquide précédent à 0. Donc, au début, précédent est égal à 0, donc il est à la position 0 et l'étape est à la position quatre. Et si l'élément n'est pas trouvé dans cet intervalle, alors nous devrions donner la valeur précédente de quatre. Donc précédent est maintenant à la position quatre et nous devons ajouter quatre à l'étape. Donc étape serait à la position huit et continuer jusqu'à ce que nous trouvons un élément de travail et cette interprétation et notre intervalle. Donc, pour ce faire, nous devons créer une boucle while et définir la boucle wild comme à un est inférieur à x. maintenant, nous pourrions arriver à un point où si nous continuons à ajouter quatre, l'étape, nous pourrions avoir un pas supérieur à n, alors, nous ne pouvons pas y accéder à un demi-pas. Donc, au lieu d'accéder au tableau de l'étape qui dit un minimum radar entre l'étape et, et. Donc, chaque fois que nous exécutons cette boucle, nous devons changer avant la nouvelle valeur. Et la même chose pour l'étape 3 à ajouter. Tout ce qu'on a ici. Donc, il a ajouté et puis nous allons obtenir précédent est supérieur ou égal à. Et puis on a fini. Nous n'avons pas trouvé l'animal qui a tout simplement tourné minuscule 1. Et lui, nous devrions changer en entier. Maintenant. Donc, ce que nous disons ici dans cette boucle while, utilisons-le dans cet exemple. Tout d'abord, nous avons précédent égal à 0 et l'étape quatre position pour l'instant, nous passons par cette boucle while. Tout d'abord, nous allons vérifier tableau du minimum entre l'étape et ensuite l'étape est sûrement inférieure
à n. Dans ce cas, l'étape est égale à quatre. Donc maths à un de quatre, ce qui est trois. Dans ce cas, nous allons vérifier si trois est inférieur à x. oui, alors nous allons continuer à exécuter cette boucle while va changer les valeurs. Maintenant, l'inverse est égal à quatre et l'étape est égale à huit. Et puis nous vérifierons si nous passons les limites. Si précédent est supérieur ou égal à n,
Ensuite, nous avons passé les limites et nous avons fait, nous n'avons trouvé aucun nombre qui correspond aux actes. Maintenant, nous sommes à la position 4. Et la position huit. La même chose. Nous comparons ce 21 avec 5521 est inférieur à 55 et nous devons exécuter la boucle while une fois de plus précédente est maintenant à la position huit. Donc c'est la position pour, c'est l'aide à la position. Et l'étape est à la position 12. Dans ce cas, nous avons 144. Donc comparé cent quarante quatre, cinquante cinq et cinquante cinq ans de moins qu'un 144, puis sortira de la boucle. Ayant précédé la valeur de huit et l'étape de la valeur de 12, alors nous avons notre intervalle et 55 est dans cet intervalle. Maintenant, après avoir quitté la boucle while, nous devons effectuer une recherche linéaire pour x et un y et une autre boucle while. Donc, alors que tableau de résultat avec le précédent. Maintenant, puisque le précédent est à la position huit et l'étape est à la position cent quarante quatre et cinquante cinq, ce qui a montré que le récepteur est en dissidence premier intervalle, alors nous allons commencer par 21 et continuer. Si large carry au précédent est inférieur à x, alors nous allons incrémenter d'un. Et si nous sommes arrivés à un point où précédent est égal à l'une ou l'autre étape, égal à 12 sur n, Donc égal au minimum entre les deux entiers, soit timbre. Et puis nous avons besoin de casser ou de retourner minus1 peut simplement retourner moins un. Dans ce cas, puisque nous n'avons pas trouvé notre numéro. Et puis nous vérifions si nous avons trouvé l'élément. Donc, si tableau précédent est égal à x, alors nous retournons cette position et retournons moins un. Si on meurt, on ne l'a pas trouvé. Donc, c'est un t que nous avons ajouté ne peut pas converger de n booléen, nous avons un manquant. Donc c'est ça, c'est notre fonction. Et allons de l'avant et choisissez-le ici. Donc on va imprimer morceau et on va chercher 55. Alors prenons ceci et mettez-les dans notre, c'est notre tableau et il retournera dix. Donc 55 est à la position dix. Donc ces deux premières lignes provenaient des fonctions passées maintenant cette heure que notre position où 55 est sur cette liste. Donc c'est ça pour les sauts. se voit dans la vidéo suivante.
29. Recherche d'interpolation: Et d'autres algorithmes de recherche comme la recherche d'interpolation. La recherche d'interpolation fonctionne mieux que la recherche binaire. Parce que la recherche binaire vérifie toujours sur une base d'élément intermédiaire. Mais la recherche d'interprétation peut aller à différents endroits en fonction de la valeur de P à rechercher. Donc, par exemple, si nous voulons rechercher le numéro trois et cette liste, si nous utilisons la recherche binaire, ira vérifier au milieu. Donc soit 1321034, donc c'est le milieu de la liste. Cependant, si nous utilisons la recherche d'interpolation ira à la valeur qui est plus proche de notre nombre en utilisant une formule spécifique et nous en parlerons plus tard. Donc il trois est plus proche de 0 qu'il est plus proche de 610. Donc notre formule nous mènera à un nombre entre ces deux. Donc la même idée que la recherche binaire, mais au lieu d'avoir un élément intermédiaire, nous aurons une position qui changera en fonction de nos éléments. Alors allons de l'avant et créons notre méthode publique. Et appelons-le l'interpolation. Et comme d'habitude de prendre un tableau d'éléments et la taille de l'élément, ainsi que le IV ou disons x. maintenant, nous devons définir notre bas et haut et bas égal à 0 et sera et minus1 boucle y. Alors que faible est inférieur ou égal à i, sinon nous n'avons plus besoin de travailler parce que nous n'avons pas trouvé notre élément. Donc c'est la même chose que nous l'avons fait dans la recherche binaire. Et nous devons ajouter quelques conditions. Bien que notre élément x soit inférieur ou égal à, notre faible est supérieur ou égal à, je suis désolé, et est inférieur ou égal à notre élément. Aussi longtemps que ces conditions sont remplies, nous pouvons travailler ici. Maintenant, chaque fois que nous arrivons à un point où notre bas est égal à notre indice élevé, cela signifie que nous l'avons fait, soit nous trouvons l'élément ou non. Donc, nous allons vérifier si je sais la même chose car ils sont égaux, est égal à notre x. et c'est le cas retour faible, sinon, retour minus1. Et après avoir vérifié cette condition, maintenant nous pouvons travailler, peut créer notre formule cette même position qui va sauter. Comme nous l'avons fait dans notre recherche binaire, nous avons créé une position appelée élément métallique. Chaque fois que nous allons à l'élément central maintenant, nous créons un autre entier appelé position. Et la formule est la suivante. C' est ainsi que nous calculons l'interpolation. Et un de haut moins bas. Ensuite, nous le multiplions avec je x moins un de charge. Et maintenant, nous vérifions si un rayon à cette position est égal à notre élément, alors nous retournons juste notre position. Sinon, nous vérifierons qu'un à cette position est inférieur à notre élément. Ensuite, nous devons passer de la position basse à la position haute plus un. La même chose que nous l'avons fait et dans la recherche binaire, mais au lieu de la position et nous avons utilisé la méthode sinon sera la position moins un. Donc, sinon, si le nous avons à une position est supérieure à x, alors du serait égal à la position minus1. Et après avoir terminé cette condition et tout, la boucle while, nous pouvons retourner moins un si nous ne trouvons pas l'entier. Et maintenant, revenons en arrière et utilisons-le ici. Donc, j'imprime l'interpolation. Nous avons le a et B et x sera le nombre. Donc, par exemple, supposons une recherche pour b. Et allons de l'avant et exécutons notre code. Va obtenir pour SO trois est à la position 401234. Changons ce numéro à 89 et on aura la position 11. Donc 89 est à la position 11. Et la dernière chose que nous venons vérifier si nous entrons un numéro qui n'est pas dans cette leçon, 900, nous obtenons moins un. Donc c'est tout pour la recherche d'interpolation. se voit dans la vidéo suivante.
30. Recherche exponentielle: Le dernier algorithme de recherche dont nous allons parler est la recherche exponentielle. recherche exponentielle comporte deux étapes. abord, nous devons trouver la plage où l'élément est présent. Et puis nous ferons une recherche binaire dans l'étrange. Alors considérons cette leçon. Nous avons 16 éléments et nous devons trouver, par exemple, 89. Donc, ce que nous allons faire est, tout d'abord, considérer si notre nombre est égal au premier élément de cette liste. Si c'est le cas, nous
retournons 0, donc c'est à la position 0. Sinon, nous vérifions tous les autres éléments. Nous commençons par i égal à un et avec doublet I égal à deux, puis i égal à 24816 et ainsi de suite. Et allons de l'avant et mis en œuvre pour mieux comprendre cela. Va ici et tu as du statique public, et appelons-le exponentielle. Comme d'habitude, prenez un tableau d'entiers et, et, et la valeur que nous allons rechercher, nous allons le nommer x ici. Tout d'abord, comme nous l'avons dit, nous devons vérifier si à l'index 0, si la valeur est à l'index 0, alors nous retournons simplement 0. Sinon, nous devons trouver la plage pour la recherche binaire par doublement répété. Donc, nous allons définir un entier avec la valeur de un, et nous entrons dans la boucle. Alors que je suis inférieur à n, la durée de la journée. Et à un, à i est inférieur à notre, inférieur ou égal à notre nombre. Cette boucle sera exécutée. Donc, nous allons simplement multiplier i par deux. Donc, chaque fois que nous entrons dans cette boucle, nous multiplions i par deux. Voyons donc ici dans cet exemple, quand nous pouvons quitter cette boucle. Par exemple, si nous voulons rechercher le nombre 13, tout d'
abord, nous vérifions si 0 est égal à 13. Non, ce n'est pas le cas. Ensuite, nous définissons i égal à un et entrons dans cette boucle. Je suis égal à un, va vérifier. Alors que je à a, à i est inférieur ou égal à x, un est inférieur ou égal à 13. Oui, alors nous multiplions i par. Donc maintenant, je suis égal à deux, et nous allons passer à notre prochain élément. Ici, nous avons aussi un, il est moins de 13 et i est inférieur à n. Ensuite, nous multiplions i par 21 plus de temps. Maintenant, nous avons deux fois 24201234. Maintenant, on est là. Nous vérifions que le est inférieur à 13. Nous pouvons donc multiplier une fois de plus à quatre fois 28. Donc maintenant on est 5678, on est à 21. Maintenant. On vérifiera que 21 est moins de 13. Non, ce n'est pas le cas. Alors. Nous sortons de la boucle avec i égal à huit. Maintenant, je suis égal à huit. Et pour obtenir notre intervalle, nous avons i égal à huit et i égal à quatre, ce qui est huit divisé par deux. Donc, après avoir trouvé notre intervalle ici, nous utilisons simplement la recherche binaire. Et je travaille à un. Et ici nous avons je divisé par deux. C' est notre intervalle et notre minimum entre i et un, i et n. Puisque c'est peut-être le cas,
il se peut que je soit supérieur à n et que nous ne puissions pas travailler en dehors de nos frontières. Et ici, nous avons notre entier x. et puisque nous avons besoin de retourner le type, donc nous tournons simplement la recherche binaire. Et puis on a fini. Allons-y et utilisons-le ici. Donc, nous allons aller de l'avant et imprimer exponentielle à array.length et w. Nous allons chercher par exemple, 13. Et le code en aura sept. Donc 13 est à la position 7. Alors rendons ça mieux, plus gentil. Et exponentielle. Conservez-le comme exponentiel. Et un résultat entier est égal à cet exponentiel. Si le résultat est supérieur à 0, alors nous imprimons l'élément est présent à l'index. Et nous imprimons l'index. Sinon, nous imprimons cet élément n'est pas présent. Et Ray et clustering le code obtiendra élément est présent et index sept. Maintenant, nous avons un raccourci en Java que vous pouvez utiliser. Donc, au lieu d'écrire tout cela, nous pouvons simplement imprimer l'une des deux lignes. Donc, nous devons définir ici la condition si le résultat est inférieur à 0, c'est le cas. On peut imprimer. L' élément n'est pas présent. Et l'autre déclaration serait élément est présent, index. Et nous imprimons l'index. Allons donc voir ce qui aurait été ici. Exécutons le code et nous obtenons l'élément est présent et index sept. Donc, ce raccourci, Tout d'abord, NDA System.out.Print méthode. Nous définissons la condition que votre résultat soit inférieur à 0. Ensuite, cette méthode imprimera automatiquement la première instruction. Sinon, il imprimera tout ce qu'il y a après les deux points ici. Donc, nous leur avons demandé si il est demandé est inférieur à 0, oui, imprimer ceci. Sinon. Imprimez ceci. Ceci est très utile si nous ne voulons pas compliquer les choses et nous avons besoin d'une forme d'impression très simple. C' est donc pour les algorithmes de recherche. se voit dans la vidéo suivante.
31. Projet: Passons enfin au projet est très facile et simple, et ce projet aura deux piles et empiler un et commencer à. Ici, vous devez pousser quelques forces à ces balises. Donc, par exemple, je vous ai poussé est comment avait le bas pour obtenir Bonjour avait la, comment allez-vous. Maintenant, ce que vous devez faire est de créer cette méthode qui est appelée fusion. Pour fusionner la pile un et commencer à la nouvelle étape , puis le stocker dans une nouvelle pile ici à l'extérieur dans la méthode principale. Puis bien sûr imprimé que j'ai utilisé et Java pile. Mais bien sûr, vous pouvez utiliser la pile que nous avons construite auparavant. Vous pouvez également utiliser n'importe quel type de données ici au lieu de la force. Mais j'ai choisi les choses pour voir à quoi cela
ressemblerait quand j'imprimerais le message ou les mots. Et bien sûr, c'est à ça que votre méthode devrait ressembler. Il devrait.
32. Récap: Merci et félicitations pour le discours de frappe. Voici un bref résumé de ce que nous avons fait. Tout d'abord, nous avons parlé de pile. Nous avons utilisé des tableaux et des listes à liens uniques pour implémenter ces balises. Ensuite, nous passons à des indices et une liste simple et double liée. Et bien sûr, enfin, nous avons parlé des algorithmes de tri et de recherche. Nous avons fait beaucoup d'entre eux, comme la recherche rapide et bubblesort et la recherche linéaire et binaire. Et nous avons toujours la structure de données non linéaire. Et j'espère que nous les couvrirons plus tard dans les prochains cours. Alors merci d'être présent et de vous voir dans la prochaine classe.