اسٹیک کا استعمال کرتے ہوئے ایک نمبر کو الٹ کریں


مشکل سطح آرام سے
اکثر پوچھا جاتا ہے میک نوکیا o9 حل
ریاضی اسٹیک

الٹ میں ایک نمبر کا استعمال کرتے ہوئے ڈھیر لگانا مسئلہ ہم نے ایک عدد کی نمائندگی کرنے والے ایک متغیر متغیر دیا ہے۔ اسٹیک کا استعمال کرکے دیئے گئے نمبر کو پرنٹ کریں۔

اسٹیک کا استعمال کرتے ہوئے ایک نمبر کو الٹ کریں

مثال کے طور پر

ان پٹ: 12345

آؤٹ پٹ: 54321

ان پٹ: 207

آؤٹ پٹ: 702

اسٹیک کا استعمال کرتے ہوئے ایک نمبر کو معکوس کرنے کی وضاحت

نمبر n = 12345 دیں

ٹریک کرنا شروع کریں اور دیئے گئے نمبر کے ہندسے کو ایک ایک کرکے اسٹیک میں اسٹور کریں اور نمبر / 10 کی طرح اپ ڈیٹ کریں۔

  • مرحلہ 1: n = 1234 اسٹیک = 5
  • مرحلہ 2: n = 123 اسٹیک = 5,4
  • مرحلہ 3: n = 12 اسٹیک = 5,4,3
  • مرحلہ 4: n = 1 اسٹیک = 5,4,3,2
  • مرحلہ 5: این = اسٹیک = 5,4,3,2,1،XNUMX،XNUMX،XNUMX،XNUMX

اس کے بعد عناصر کو اسٹیک سے پاپ کریں اور نمبر تشکیل دیں -

ریورس = ریورس + (اسٹیک کے اوپری حصے کی قیمت * i) (جہاں i = 1 ہے ، ہر مرحلے میں i * 10 کی طرح اپ ڈیٹ کریں)

لہذا ، آؤٹ پٹ = 54321

اسٹیک کا استعمال کرتے ہوئے ایک نمبر کو ریورس کرنے کے لئے الگورتھم

  1. اعداد کی نمائندگی کرنے والے انٹیجر متغیر کو شروع کریں۔
  2. دیئے گئے نمبر کے ہندسوں کو اسٹور کرنے کے لئے انٹیجر قسم کی اسٹیک تیار کریں
  3. دیئے گئے نمبر کی لمبائی سے گزریں اور جب کہ تعداد 0 کے برابر نہیں ہے ، دیئے گئے نمبر 10 کے نتائج کو اسٹیک میں دھکیلیں ، اس کے بعد دیئے گئے نمبر کو ہر اعداد پر 10 سے تقسیم کریں۔
  4. دیئے گئے نمبر کے الٹ کو اسٹور کرنے کے لئے ایک انٹیجر متغیر بنائیں اور اسے ابتدائیہ 0. کے طور پر شروع کریں۔ ہندسوں کی جگہ کی قیمت رکھنے اور اسے 1 کے طور پر شروع کرنے کے لئے دوسرا انٹیجر متغیر بنائیں۔
  5. عبور کرتے وقت اسٹیک خالی نہ ہو یعنی اسٹیک کی جسامت 0 کے برابر نہ ہو۔ دیئے گئے نمبر کے الٹ کو اسٹور کرنے کے لئے انٹیجر متغیر کو اپ ڈیٹ کریں جیسا کہ ریورس متغیر میں خود ذخیرہ شدہ قیمت کے علاوہ عنصر کے نتیجے میں اوپر والے حصے میں رکھنا چاہئے۔ جگہ کی قیمت کے عددی متغیر سے اسٹیک ضرب۔
  6. اسٹیک کے اوپری حصے پر عنصر کو پاپ / حذف کریں اور مقام کی قیمت کے عددی متغیر کو اپ ڈیٹ کریں جیسا کہ مقام کی قیمت میں متغیر شدہ قیمت خود 10 سے بڑھ جاتی ہے۔
  7. انٹیجر متغیر کو پرنٹ کریں جس میں دیئے گئے نمبر کے الٹ ہوں۔

سی ++ پروگرام اسٹیک کا استعمال کرکے کسی نمبر کو ریورس کرنا

#include <iostream>
#include <stack>
using namespace std; 
  
stack <int> st; 
  
void push_digits(int number){ 
    
    while(number != 0){ 
        st.push(number % 10); 
        number = number / 10; 
    } 
} 
  
int reverse_number(int number){ 
    push_digits(number); 
      
    int reverse = 0; 
    int i = 1; 
      
    while(!st.empty()){ 
        reverse = reverse + (st.top() * i); 
        st.pop(); 
        i = i * 10; 
    } 
      
    return reverse; 
} 
  
int main(){ 
    int number = 12345; 
      
    cout << reverse_number(number); 
      
    return 0; 
}
54321

جاوا پروگرام اسٹیک کا استعمال کرکے کسی نمبر کو ریورس کرنے کے لئے

import java.util.Stack; 
  
class ReverseDigits{ 
    
    static Stack<Integer> st= new Stack<>(); 
  
    static void push_digits(int number){ 
        
        while(number != 0){ 
            st.push(number % 10); 
            number = number / 10; 
        } 
    } 
  
    static int reverse_number(int number){ 
        push_digits(number); 
        int reverse = 0; 
        int i = 1; 
  
        while (!st.isEmpty()){ 
            reverse = reverse + (st.peek() * i); 
            st.pop(); 
            i = i * 10; 
        } 
  
        return reverse; 
    } 
  
    public static void main(String[] args){ 
        int number = 12345;
        
        System.out.println(reverse_number(number));
        
    } 
}
54321

پیچیدگی کا تجزیہ

وقت کی پیچیدگی: O (log n) جہاں n دیئے گئے نمبر کی لمبائی ہے۔

معاون جگہ: O (log n) کیونکہ ہم نے دیئے گئے نمبر کے ہندسے کو الٹ کرنے کے لئے لاگ ان اضافی جگہ استعمال کی۔

حوالہ جات