1. 程式人生 > >用鏈棧實現任意進位制的轉化

用鏈棧實現任意進位制的轉化

 

    任意進位制的轉化基本思路是以十進位制為中轉,先將其他進位制轉為十進位制,再由十進位制轉目的進位制

/* 棧的結構型別 */
typedef char ElemType;
typedef struct Stack{
   ElemType elem[N];
   int top;
}Stack;
//初始化棧
void InitStack(Stack *S){
   S->top=-1;
}
//出棧
void Pop(Stack *S){
  if(S->top==-1){
      printf("stack is null");
   }else{
      S->top--;
   }
}
//入棧
void Push(Stack *S,ElemType e){
   S->top++;
   S->elem[S->top]=e;
}
//列印棧
void showStack(Stack *S){
   int i;
   if(S->top==-1){
      printf("stack is null");
   }else{
      for(i=S->top;i>=0;i--){
        printf("%c",S->elem[i]);
      }
   }
   printf("\n");
}
//十進位制轉其他進位制
void statechange(Stack *S,int n,int i){
    int a=n,b;
    char c;
    do{
      b=a%i;
      if(b>9){
        c=b-10+'A';
      }else{
        c=b+'0';
      }
      Push(S,c);
      a=a/i;
    }while(a>0);
}
//其他進位制轉十進位制
int changestate(Stack *L,int i){
   int k,n=0,l=L->top,g;
   for(k=0;k<=l;k++){
      g=L->elem[k]-'0';
      if(g>i){
          printf("輸入的進位制錯誤");
          return -1;
      }else{
           n+=pow(i,l-k)*(g);
      }
   }
   return n;
}


相關推薦

實現任意轉化

      任意進位制的轉化基本思路是以十進位制為中轉,先將其他進位制轉為十進位制,再由十進位制轉目的進位制 /* 棧的結構型別 */ typedef char ElemType; typedef struct Stack{ ElemType elem[N];

資料結構順序實現R轉換

#include<stdio.h> #define MAXSIZE 500 typedef struct{ int *base; int *top; int stacksize; }Sqstack; int Initstack(Sqstack &S)

C語言實現任意轉換程式碼及解析

問題描述 給定一個 M 進位制的數 x,實現對 x 向任意的一個非 M 進位制的數的轉換。 問題分析 掌握不同數制間的轉換關係是解決問題的關鍵,這裡所說的數制一般包括二進位制、八進位制、十六進位制及十進位制。除了不同的數制還有下面幾個必須要了解的概念。 基數:在一種數制中,只能使用一組固定的數字來表示

javascript實現任意間的轉換

<body> <input type="text" name="startR" placeholder="初始進位制"> <input type="text" name="endR" placeholder="目標進位制"> <input typ

Java實現任意轉換

問題:將m進位制num轉換為n進位制 (2 <= m,n <= 62) ? 總體思路是:先將m進位制轉換為10進位制,再將10進位制轉為n進位制。 1、m進位制數num轉為10進位制

C語言實現任意數之間的轉換

使用C語言程式設計實現任意進位制數(2-16進位制)轉換為其他任意進位制數(2-16進位制),實驗平臺:vs2015。 #include<stdio.h> #include<str

java實現任意的互相轉換

首先宣告此工具類是借鑑前輩的程式碼寫的,工具類主要用於專案中需要生成一個key id,包括日期時間和mac,又要儘可可能資料量小並具有可讀性,可能我選為0-9,A-Z和幾個符號搭配成42進位制,具體程式碼如下, 你亦可能改變code_string,改為自己想要的

關於Java實現轉化運算)

一、需求: 最近在做檔案傳輸的東西,檔案傳輸當然是傳輸很重要,包括編碼格式以及進位制的統一。 簡略的說一下這次做的東西:首先檔案是按照塊來發送的,一塊一塊大的發,但是,傳送的過程是這樣的; 先發送頭部,頭部包括三部分:1.一個int型別的檔案Id,               2.一個long型別的偏

實現將十進位制數轉換為任意數(2,8,16...).

解題思路:假如N為輸入的數,n為要轉換為的進位制,若要將十進位制231轉換為8進位制數,過程如下; N                        N/n                      N%n 231                   28         

C語言資料結構 實現轉化

直接上程式碼,思路看註釋; /*棧實現進位制轉化 *十進位制最大轉化為36進位制用10(A)-35(Z)表示 */ #include<stdio.h> #include<malloc.h> #include<stdlib.h> #

資料結構 的應用任意轉換(c語言實現

#include "stdlib.h" #include "stdio.h" typedef struct Stack{ int *base; int *top; int stacksize;

任意轉換(佇列實現儲存和輸出)

#include <stdio.h> #include <stdlib.h> #define maxsize 1000000 **//定義佇列** typedef struct { char c[maxsize]; int top; }seqstack

【資料結構】順序表實現十進位制轉換任意

/* & File : 進位制準換 * Author : Laugh * Copyright: Laugh * 主題 :對於輸入的任意一個非負十進位制小數,列印輸出與其等值的任意進位制小數 * Date : 2018/10/14 */

JAVA實現10的數轉化任意n的數

我們仔細想想,要實現10進位制數轉化為任意n進位制的數,其實是可以用棧來實現的。 根據計算機的進位制轉換知識我們知道,10進位制數num轉化為n進位制(比如n=2),我們就是先進行num % n 操作,餘數不斷的除以2,直到餘數為零。然後把商按照從下到上的順序排列。(具體怎

資料結構實驗之一:轉換(java實現

資料結構實驗之棧一:進位制轉換 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 輸入一個十進位制整數,將其轉換成對應

請編寫一個C函式,該函式可以實現將一個整數轉為任意的字串輸出

void to_change(int num,int n); int main() {         int num,n;         printf("Please enter a number to change:");         scanf("%d",&num);         p

C++實現十進位制轉換為任意

十進位制數在C++中用什麼表示? 一個十進位制數,在程式中用什麼方式轉換為其他進位制,和在數學中的思路一樣嗎?? 輸出的結果用什麼表示比較方便? 下面的程式中digit思考為什麼要用靜態變數? #include <iostream> #include <

4.2題目: 請編寫一個C函式,該函式可以實現將一個整數轉為任意的字串輸出

/*編寫一個C函式,該函式可以實現將一個整數轉化為任意進位制的字串輸出*/ #include <stdio.h> #include <string.h> void change(char *s,int num,int n) {int i=0;char

順序實現向二轉化

clu 進制 () fin maxsize malloc all truct size #include<stdio.h> #include<stdlib.h> #define maxsize 30 typedef int datatype; ty

Python內建轉換函式(實現16和ASCII轉換)

在進行wireshark抓包時你會發現底端視窗報文內容左邊是十六進位制數字,右邊是每兩個十六進位制轉換的ASCII字元,這裡使用Python程式碼實現一個十六進位制和ASCII的轉換方法。 hex() 轉換一個整數物件為十六進位制的字串 >>> hex(16) '0x10' >&