十進位制轉換任意進位制--鏈棧實現
首先,先了解一下c語言const用法:
修飾區域性變數,int const a = 9; const int b = 8;這兩種寫法是一樣的,表示a和b都是常量,不可改變。需要注意的是,用const修飾變數時,一定要給變數初始化,否則之後就不能再進行賦值了。
完整程式碼如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const char f[]="0123456789ABCDEF";//定義一個全域性常量 ,方便匯出十進位制以上的不為數字形式的資料的顯示
typedef struct StackNode //建立鏈式棧的結構體
{
char data;//棧的資料域,為了方便設定成char型別
struct StackNode *next; //棧的指標域
}SqStack,*LinkStack;
void InitStack(LinkStack &S)//棧的初始化,只有建立一個棧頂結點這一步
{
S = (SqStack*)malloc(sizeof(SqStack));//建立一個野結點,使其為NULL,便成為棧頂結點。
S = NULL;
}
int Push(LinkStack &S,char e)//進棧
{
SqStack* p;//定義一個野結點
p = (SqStack*)malloc(sizeof(SqStack));
p->data = e;//使該結點裝上資料元素e,並使其next等於S,類似於連結串列的頭插法
p->next = S;
S = p;//棧頂結點S,一直在棧的最前方
return 0;
}
void Pop(LinkStack &S)//使棧頂元素出棧,並返回棧頂元素
{
if(S==NULL)//判斷棧是否為空
{
printf("棧空!");
}
else
{
SqStack* p;//這裡定義一個結點,方便後面對棧頂結點的釋放
printf("%c",S->data);//輸出棧頂資料
p = S;
S = S->next;//使棧頂結點指向下一個結點,類似於棧減一
free(p);//釋放棧頂元素
}
}
void Decimal(LinkStack S)//十進位制轉換任意進位制函式
{
int n,//輸入的十進位制數
m,//輸入的要轉的進位制
i=0;//記錄次數變數
printf("請輸入一個十進位制數: ");
scanf("%d",&n);
while(1)//用於檢測換行符,使函式脫離scanf的連續輸出
if(getchar()=='\n')
break;
printf("請輸入要轉的進位制: ");
scanf("%d",&m);
while(n)//迴圈終止條件是n為0
{
Push(S,f[n%m]);//進棧,進的是char型
n=n/m;
i++;//記錄迴圈次數,方便出棧
}
printf("結果:");
while(i--) //出棧操作
Pop(S);
}
int main()
{
LinkStack S;
InitStack(S);//定義一個棧,並初始化
Decimal(S);//進位制轉換函式
return 0;
}
(完)
相關文章
- Qt進位制轉換(十進位制轉十六進位制)QT
- 【進位制轉換】十進位制與十六進位制相互轉換方法
- 十六進位制轉換為十進位制
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- lua之m進位制轉換為n進位制-任意進位制轉換演算法演算法
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- Python 進位制互相轉換(二進位制、十進位制和十六進位制)Python
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- JavaScript十進位制轉換為二進位制JavaScript
- Oracle二進位制與十進位制轉換Oracle
- 二進位制轉十進位制快速轉換方法
- 計算機求解10進位制轉換任意進位制計算機
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- oracle 給的轉換函式實現 十六進位制---->十進位制Oracle函式
- 1474 十進位制轉m進位制+1475 m進位制轉十進位制
- n進位制轉十進位制
- 十進位制轉十六進位制
- 大話二進位制,八進位制,十進位制,十六進位制之間的轉換
- 十進位制與二進位制互相轉換指南
- Go語言實現十進位制轉換成二、八、十六進位制Go
- JavaScript 進位制轉換(2進位制、8進位制、10進位制、16進位制之間的轉換)JavaScript
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- python進位制轉換(二進位制、十進位制和十六進位制)及注意事項Python
- Oracle中的二進位制、八進位制、十進位制、十六進位制相互轉換函式Oracle函式
- C++實現任意進位制的相互轉換C++
- 【轉帖】Oracle中的二進位制、八進位制、十進位制、十六進位制相互轉換函式Oracle函式
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- (轉)【iOS 開發】二進位制、十進位制、十六進位制相互轉換的方法iOS
- 十六進位制數轉十進位制
- JavaScript 二進位制數字轉換為十進位制JavaScript
- js二進位制和十進位制轉換程式碼JS
- Oracle中十進位制與十六進位制轉換程式Oracle
- 10進位制轉8進位制(棧操作)
- ORACLE中用一條SQL實現其它進位制到十進位制的轉換OracleSQL