Maison > Article > développement back-end > Inverser un nombre en C++ en utilisant la pile
Nous recevons un nombre entier Num en entrée. Le but est de trouver l'inverse du nombre à l'aide de la pile.
Stack : - Une pile est une structure de données en C++ qui stocke les données de manière LIFO (Last in First Out). Les principales opérations de la pile sont :
Déclaration- : pile
Trouver Top en utilisant top(). La fonction stck.top() renvoie la référence de l'élément supérieur dans le stck
Removing Top en utilisant pop(). La fonction supprime l'élément le plus haut du stck
Ajout d'un élément en haut à l'aide de push(). La fonction stck.push( value ) ajoute la valeur de l'élément dans la pile. La valeur doit être de type stck.
Vérifiez si staxk est vide en utilisant empty(). La fonction stck.empty() renvoie true si la pile est vide.
Entrée − Num = 33267
Sortie − L'inverse du nombre est : 76233
Explication−
Premier nous va poussez tous les éléments pour empiler
7 - 6 - 2 - 3 - 3 ← top
7 * 10000 + 6 * 1000 + 2*100 + 3*10 + 3*1 ←
= 70000 + 6000 + 200 + 30 + 3 ←
= 76233
Entrée − Num = 111000
Sortie − L'inverse du nombre est : 111
Explication −
Nous allons d'abord pousser tous les éléments à empiler
0 - 0 - 0 - 1 - 1 - 1 ← top
0 * 100000 + 0 * 10000 + 0*1000 + 1*100 + 1*10 + 1*1 ←
= 0 + 0 + 0 + 100 + 10 + 1 ←
= 111
Dans cette approche, nous allons d'abord prendre les restes du nombre saisi et pousser pour empiler et réduire le nombre de 10 jusqu'à ce que le nombre devienne 0. De cette façon, la pile sera remplie de en haut comme premier chiffre.
Prenez le numéro d'entrée Num.
Prenez la pile vide pour les entiers en utilisant stack
La fonction pushDigts (int num1) prend num1 et l'ajoute à la pile avec le premier chiffre en haut.
Prenez rem comme variable.
À l'aide d'une boucle while, vérifiez si num1 est différent de zéro, si c'est vrai, définissez rem=num1%10.
Poussez rem pour empiler.
Réduisez num1 de 10 pour le 2ème chiffre et ainsi de suite.
Maintenant, inversez le nombre en utilisant les éléments de la pile avec la fonction revrseNum ( ).
Prenez les variables revrs, topp, temp, i.
Pendant que la pile n'est pas vide
Prenez l'élément le plus haut comme topp=stck.top().
Réduisez la pile en utilisant stck.pop().
Définissez temp=topp*i.
Ajoutez la température aux revrs.
Augmentez i de i*10 par multiples de 100.
À la fin, renvoyez le inverse du numéro d'entrée en tant que revrs.以下输出
#include <bits/stdc++.h> using namespace std; stack <int> stck; void pushDigts(int num1){ int rem; while (num1 > 0){ rem=num1 % 10; stck.push(rem); num1 = num1 / 10; } } int revrseNum(){ int revrs = 0; int i = 1; int temp; int topp; while (!stck.empty()){ topp=stck.top(); stck.pop(); temp=topp*i; revrs = revrs + temp; i *= 10; } return revrs; } int main(){ int Num = 43556; pushDigts(Num); cout<<"Reverse of number is: "<<revrseNum(); return 0; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!