用棧(鏈式)實現十進位制到其他進位制的轉換:
阿新 • • 發佈:2019-02-20
用棧實現十進位制到其他進位制的轉換,此處最大進位制設為十六進位制,可以自行拓展。
主要方法:除商倒數取餘
#include <iostream> using namespace std; //棧節點,使用的是鏈棧結構 struct node { int data; struct node *next ; }; //進棧,需要返回指標型別,因為傳指標到裡面只能更改指標所指的值,而不能更改指標本身的值 struct node * push( struct node *top, int n) { struct node *s=new node; s-> data=n; s-> next=top; top= s; return top; } //出棧,並將餘數放入到n中 struct node * popit( struct node *top, int &n ) { n= top->data ; struct node *p=top; top= top->next ; delete p; return top; } int main () { struct node *top= NULL;//初始化 int n,base ; cout<<" 待轉換的整數: "<<endl ; cin>>n ; cout<<" 轉換為多少進位制: "<<endl ; cin>>base ; while(n) //利用除商取餘法將餘數壓入棧中,直到n為0 { top=push (top, n%base ); n/=base ; } int k=0; while(top!=NULL )//將餘數倒著取出並顯示 { top=popit (top, k); if (k<10) { cout<<k ; continue; } switch(k) { case 10: cout<<"A" ;continue; case 11: cout<<"B" ;continue; case 12: cout<<"C" ;continue; case 13: cout<<"D" ;continue; case 14: cout<<"E" ;continue; case 15: cout<<"F" ;continue; default: cout<<k ; } } system("pause" ); return 0; }