寫這篇文章的主要目的,是給大家介紹兩門語言,C語言和Python兩門語言,怎么利用其數(shù)據(jù)結(jié)構(gòu),實現(xiàn)十進制和二進制數(shù)的轉(zhuǎn)換,具體代碼下文也會給大家貼出來,希望能為大家?guī)硪欢ǖ膸椭?/p>
利用棧的數(shù)據(jù)結(jié)構(gòu)實現(xiàn)將十進制數(shù)轉(zhuǎn)換成二進制數(shù)
順序表的存儲結(jié)構(gòu)實現(xiàn)棧
代碼:
#include <stdlib.h> #include <stdio.h> #define STACK_INIT_SIZE 100 //棧初始開辟空間大小 #define STACK_INCREMENT 10 //棧追加空間大小 //棧的結(jié)構(gòu)體 typedef struct stack{ int *base; int *top; int size; }binStack; //棧初始化 binStack stack_init() { binStack bs; bs.base = (int *)malloc(sizeof(int)*STACK_INIT_SIZE); bs.top = bs.base; bs.size = STACK_INIT_SIZE; return bs; } //入棧 void push(binStack *bs, int e) { if(bs->top - bs->base >= bs->size) { bs->size += STACK_INCREMENT; bs->base = realloc(bs->base, bs->size); } *(bs->top++) = e; } //出棧 int pop(binStack *bs) { if(bs->top != bs->base) { bs->top--; return *bs->top; } return -1; } //主函數(shù) void main() { int dec; binStack bs = stack_init(); printf("請輸入十進制整數(shù):\n"); scanf("%d", &dec); while(dec) { push(&bs, dec%2); dec /= 2; } printf("轉(zhuǎn)換后的二進制數(shù)是:\n"); while(bs.top != bs.base) { printf("%d", pop(&bs)); } printf("\n\n"); system("date /T"); system("TIME /T"); system("pause"); exit(0); }
運行結(jié)果:
對于stack我們可以使用python內(nèi)置的list實現(xiàn)(也可以用鏈表實現(xiàn)),因為list是屬于線性數(shù)組,在末尾插入和刪除一個元素所使用的時間都是O(1),這非常符合stack的要求。
代碼:
import datetime //顯示時間引入的庫 import time // from pip._vendor.distlib.compat import raw_input //使命令窗口不立即關(guān)閉引入的庫 //棧類 class BinStack: def __init__(self): self.bs = [] //入棧 def push(self, e): self.bs.append(e) //出棧 def pop(self): if self.bs: return self.bs.pop() else: raise LookupError("stack is empty!") //檢查棧是否為空,是返回False,不是返回True def isEmpty(self): return bool(self.bs) if __name__ == '__main__': binStack = BinStack() dec = int(input("請輸入十進制整數(shù):\n")) print("轉(zhuǎn)換后的二進制數(shù)是:") while dec != 0: binStack.push(dec%2) dec //= 2 while binStack.isEmpty() == True: print("{}".format(binStack.pop()), end="") else: print("\n") //打印時間 datetime = datetime.datetime.now() print(datetime.strftime("%Y-%m-%d\n%H:%M:%S")) //使命令窗口不立即關(guān)閉 input("Press Enter to exit…")
運行結(jié)果:
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/127591.html
摘要:數(shù)字在中,整型長整型浮點數(shù)負數(shù)布爾值等都可以稱之為數(shù)字類型。數(shù)字類型的復(fù)雜度整數(shù)比浮點數(shù)簡單浮點數(shù)比復(fù)數(shù)簡單。布爾類型布爾類型其實就是數(shù)字和的變種而來,即真或假,實際上就是內(nèi)置的數(shù)字類型的子類而已。 上篇文章中我們簡單的體驗了Python語言基本概念與語法,那么在繼續(xù)深入下去的過程中,不妨先學(xué)習(xí)幾個常見的Python內(nèi)置數(shù)據(jù)類型?這也是大部分Python教科書的學(xué)習(xí)目錄,由淺至深,慢慢...
摘要:零預(yù)備知識字符編碼計算機只能處理數(shù)字,所以為文本需要轉(zhuǎn)化為數(shù)字才能被計算機處理,計算機里八個比特作為一個字節(jié),這是數(shù)據(jù)的存儲基礎(chǔ)單位。 零、預(yù)備知識 0.1 字符編碼計算機只能處理數(shù)字,所以為文本需要轉(zhuǎn)化為數(shù)字才能被計算機處理,計算機里八個比特(bit)作為一個字節(jié)(byte),這是數(shù)據(jù)的存儲基礎(chǔ)單位。計算機為了處理文本,有以下三種編碼方式: ASCII碼:只有大小寫英文字母,數(shù)字...
摘要:使用單引號雙引號和三引號或來表示字符串。不可變的集合函數(shù)會以字典類型返回當前位置的全部全局變量。用于將進制整數(shù)轉(zhuǎn)換成進制,以字符串形式表示。返回字符串中最大的字母,或數(shù)組中的最大值。的作用就是減少了單行函數(shù)的定義。 問題答案由本人整理 1.基礎(chǔ)語法是否熟悉?介紹一下 Python和其他語言最大的區(qū)別就是使用行和縮進,而不是大括號({})或者分號(;)來控制類、函數(shù)或者邏輯判斷。Pyt...
摘要:它是一門解析型的語言,何為解析型語言呢就是在運行時通過解析器將源代碼一行行解析成機器碼。而像語言,等則是編譯型的語言,即通過編譯器將所有的源代碼一次性編譯成二進制指令,生成一個可執(zhí)行的程序。 ...
閱讀 923·2023-01-14 11:38
閱讀 895·2023-01-14 11:04
閱讀 756·2023-01-14 10:48
閱讀 2055·2023-01-14 10:34
閱讀 961·2023-01-14 10:24
閱讀 840·2023-01-14 10:18
閱讀 510·2023-01-14 10:09
閱讀 588·2023-01-14 10:02