1. 程式人生 > >考研資料結構與演算法之堆疊的使用(二)利用堆疊實現進位制轉換

考研資料結構與演算法之堆疊的使用(二)利用堆疊實現進位制轉換

    將十進位制的數字轉換成各種不同的進位制,這裡以八進位制為例,其實就是不斷的除以八然後取餘數,雖然用陣列也不難實現,但是顯然棧的後進先出的特性使得更容易理解了,具體實現方法如下:

int main(void)
{
	SqStack S;
	InitStack(S);
	int num;
	printf("請輸入一個十進位制數字:\n");
	// 將一個十進位制數存在num中
	scanf("%d", &num);
	while( num > 0 )
	{
		// 取餘數,並將餘數入棧
		Push(S, num%8);
		// 取餘數之後將整數除以八進行下一次取餘直到最後一位
		num = num / 8;
	}
	printf("轉換為八進位制:\n");
	while( !StackEmpty(S) )
	{
		// 依次將棧中的內容取出
		Pop(S, num);
		printf("%d", num);
	}
	system("pause");
}
想要轉換成其它進位制也是類似的方法,只要把8替換掉就可以了。在測試程式時,需要與我上一篇日誌所提供的程式碼結合起來用,地址