在本例中,用棧實現二進位製到十進位制的轉換,其他進製轉換類似:
本例使用的棧的結構如下:
**如下:
執行結果:#include #include using namespace std;
typedef struct node
node, *pnode; //棧中每個元素都是節點,這裡定義節點
typedef struct stack
stack, *pstack; //定義棧
void initstack(pstack ps);
void pushstack(pstack ps, char c);
char popstack(pstack ps);
bool isempty(pstack ps);
int stacknodenumber(pstack ps);
int main()
cin.get();
nodenum = stacknodenumber(&s);
for(int i=0; ipbottom = new node;
if(ps->pbottom == null)
cout << "記憶體分配失敗" << endl;
else
}void pushstack(pstack ps, char c) //將c壓入棧中
char popstack(pstack ps)
else
}bool isempty(pstack ps) //判斷棧中是否有元素
int stacknodenumber(pstack ps)
return num;
}
棧 利用棧實現進製轉換
利用棧的資料結構特點,將二進位制轉換為十進位制數。二進位制數是計算機資料的儲存形式,它是由一串0和1組成的,每個二進位制數轉換成相應的十進位制數方法如下 xnxn 1 x3x2x1 2 x1 2 0 x2 2 1 xn 2 n 1 乙個二進位制數要轉換為相應的十進位制數,就是從最低位起用每一位去乘以...
順序棧實現進製轉換
1.定義乙個順序棧的結構體。typedef struct sqstack 2.寫乙個建立空順序棧的函式 status init stack sqstack s 3.寫乙個輸出順序棧元素的函式 status exit stack sqstack s printf n 4.這裡進製轉換的方法就是,先把k...
用棧實現數制轉換(java)
十進位制數n和其他d進製數的轉換時計算機實現計算的基本問題,其解決方法很多,其中乙個簡單的演算法基於以下原理 n n div d d n mod d 例如 十進位制數 1348 的八進位制數為 2504 運算過程如下 nn div 8 n mod 8 1348168 4 16821 0 212 5 ...