Computer >> Máy Tính >  >> Lập trình >> C ++

Đảo ngược một số bằng cách sử dụng ngăn xếp trong C ++

Chúng tôi được cung cấp một số nguyên Num làm đầu vào. Mục đích là để tìm ngược lại số bằng cách sử dụng ngăn xếp.

Ngăn xếp :- Ngăn xếp là một cấu trúc dữ liệu trong C ++ lưu trữ dữ liệu theo cách thức LIFO (Lần xuất trước). Các hoạt động chính của ngăn xếp là-:

Khai báo-:stack stck; // stck bây giờ là một biến ngăn xếp.

  • Tìm kiếm hàng đầu bằng cách sử dụng top () . Hàm stck.top () trả về tham chiếu của phần tử hàng đầu trong stck

  • Xóa trên cùng bằng cách sử dụng pop () . Hàm xóa phần tử trên cùng khỏi stck

  • Thêm phần tử lên đầu bằng cách sử dụng push () . Hàm stck.push (value) thêm giá trị mục trong ngăn xếp. Giá trị phải thuộc loại stck.

  • Kiểm tra xem staxk có trống không bằng cách sử dụng blank () . Hàm stck.empty () trả về true nếu ngăn xếp trống.

Ví dụ

Đầu vào - Số =33267

Đầu ra - Số lùi là:76233

Giải thích -

Đầu tiên, chúng tôi sẽ đẩy tất cả các phần tử vào ngăn xếp

7 - 6 - 2 - 3 - 3 ← trên cùng

7 * 10000 + 6 * 1000 + 2 * 100 + 3 * 10 + 3 * 1 ←

=70000 + 6000 + 200 + 30 + 3 ←

=76233

Đầu vào - Num =111000

Đầu ra - Số lùi là:111

Giải thích -

Đầu tiên, chúng tôi sẽ đẩy tất cả các phần tử vào ngăn xếp

0 - 0 - 0 - 1 - 1 - 1 ← đầu trang

0 * 100000 + 0 * 10000 + 0 * 1000 + 1 * 100 + 1 * 10 + 1 * 1 ←

=0 + 0 + 0 + 100 + 10 + 1 ←

=111

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

Trong cách tiếp cận này, trước tiên, chúng ta sẽ lấy phần còn lại của số đầu vào và đẩy sang ngăn xếp và giảm số đi 10 cho đến khi số trở thành 0. Theo cách này, ngăn xếp sẽ được lấp đầy với đầu là chữ số đầu tiên.

  • Lấy số đầu vào là Num.

  • Lấy ngăn xếp trống cho các số nguyên bằng cách sử dụng ngăn xếp stck.

  • Hàm pushDigts (int num1) nhận num1 và thêm nó vào ngăn xếp với chữ số đầu tiên ở trên cùng.

  • Lấy rem làm biến.

  • Sử dụng vòng lặp while kiểm tra xem num1 có khác 0 không, nếu đúng thì đặt rem =num1% 10.

  • Đẩy rem vào ngăn xếp.

  • Giảm num1 đi 10 cho chữ số thứ 2, v.v.

  • Bây giờ đảo ngược số bằng cách sử dụng các phần tử của ngăn xếp với hàm revrseNum ().

  • Lấy các biến revrs, topp, temp, i.

  • Trong khi ngăn xếp không trống

  • Lấy phần tử trên cùng là topp =stck.top ().

  • Giảm ngăn xếp bằng cách sử dụng stck.pop ().

  • Đặt temp =topp * i.

  • Thêm tạm thời vào vòng quay.

  • Tăng i lên i * 10 theo bội số của 100.

  • Cuối cùng, trả về phần ngược lại của số đầu vào dưới dạng số vòng quay.

  • In kết quả nhận được bên trong main.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra Kết quả sau

Reverse of number is: 65534