我們得到一個整數 Num 作為輸入。目標是使用堆疊找到數字的倒數。
Stack:- 堆疊是 C 語言中的一種資料結構,它以 LIFO(後進先出)方式儲存資料。堆疊的主要操作有-:
宣告-:stack
使用 top() 來尋找頂部。函數 stck.top() 傳回 stck 中頂部元素的參考
使用 pop() 刪除頂部。函數從 stck 中刪除最上面的元素
#使用 push() 將元素新增到頂部。函數 stck.push( value ) 將項目值加入堆疊中。值應為 stck 類型。
empty() 檢查 staxk 是否為空。如果堆疊為空,函數stck.empty() 回傳true。
輸入 − Num = 33267
輸出− 數字的逆序為:76233
解釋−
首先我們將所有元素壓入堆疊7 - 6 - 2 - 3 - 3 ← 頂部7 * 10000 6 * 1000 2*100 3*10 3*1 ←= 70000 6000 200 30 3# ←## = 76233輸入
− Num = 111000輸出
− 數字的反轉為:111#解釋
−首先我們將所有元素壓入堆疊
0 - 0 - 0 - 1 - 1 - 1 ← top0 * 100000 0 * 10000 0 *1000 1*100 1*10 1*1 ←= 0 0 0 100 10 1 ←= 111#下面程式中使用的方法如下在這個方法中,我們首先將輸入數字的餘數壓入堆疊,並將數字減少10,直到數字變為0。這樣堆疊將填充頂部作為第一位數字。
取得輸入數字 Num.
##將rem 為變數。
使用while 迴圈檢查num1 是否非零,如果為true,則設定rem=num1 。
將rem 壓入堆疊。
將num1 減少10 作為第二個數字,依此類推。
現在使用函數 revrseNum() 使用堆疊元素反轉數字。
#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; }輸出
Reverse of number is: 65534
以上是使用堆疊在C++中反轉一個數字的詳細內容。更多資訊請關注PHP中文網其他相關文章!