【數(shù)據(jù)結(jié)構(gòu)】棧和隊(duì)列之練習(xí)題(用棧實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換)

1.利用棧的數(shù)據(jù)結(jié)構(gòu)特點(diǎn)稽寒,將二進(jìn)制轉(zhuǎn)換為十進(jìn)制數(shù)
分析

由于棧具有先進(jìn)后出的特性侣背,我們輸入11001001的二進(jìn)制數(shù)卸留,出棧的順序就相反走越,將每個(gè)出棧的數(shù)帶入進(jìn)制轉(zhuǎn)換公式得到的結(jié)果就是轉(zhuǎn)換之后的十進(jìn)制數(shù)


完整代碼
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define STACK_INIT_SIZE 20
#define STACKINCREMENT  10

typedef char ElemType;
typedef struct {

    ElemType * base;
    ElemType * top;
    int stackSize;
}sqStack;

/**
 * 初始化
 */
void InitStack(sqStack * s){

    s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType));
    if (!s->base)
        exit(0);
    
    s->top = s->base;
    s->stackSize = STACK_INIT_SIZE;
}

/**
 * 進(jìn)棧
 */
void Push(sqStack * s, ElemType e){
    
    if (s->top - s->base >= s->stackSize) {  // 棧滿,擴(kuò)大空間
        
        s->base = (ElemType *)realloc(s->base, (s->stackSize * STACKINCREMENT) * sizeof(ElemType));
        
        if (!s->base)
            exit(0);
        s->top = s->base + s->stackSize;  // 設(shè)置棧頂
        s->stackSize = s->stackSize + STACKINCREMENT;  // 設(shè)置棧的最大容量
    }
    
    *(s->top) = e;
    s->top++;
    
}

/**
 * 出棧
 */
void Pop(sqStack * s, ElemType *e){
    
    if (s->top == s->base)  // 棾苌空
        return;
    s->top--;        // 棧頂指針減1
    *e = *(s->top);  // 將要?jiǎng)h除的棧頂元素賦值給e
//    *e = *--(s->top);
    
}

/**
 * 獲取棧的當(dāng)前容量
 */
int StackLen(sqStack s){
    
    return (int)(s.top - s.base);
}



int main(int argc, const char * argv[]) {
    
    ElemType e;
    sqStack s;
    
    int len,i,sum = 0;
    
    // 初始化棧
    InitStack(&s);
    
    printf("請輸入二進(jìn)制數(shù)旨指,輸入#號(hào)表示結(jié)束!\n");
    scanf("%c",&e);
    
    while (e != '#') {
        Push(&s, e);
        scanf("%c", &e);
    }
    
    getchar(); // 把‘\n’從緩沖區(qū)去掉
    
    len  = StackLen(s);
    printf("棧的當(dāng)前容量是:%d\n", len);
    
    for (i = 0; i < len; i++) {
        
        Pop(&s, &e);
        sum = sum + (e-48) * pow(2, i); // 這里是ASCII碼喳整,所以要減去48
    }
    
    printf("轉(zhuǎn)化為十進(jìn)制數(shù)是:%d\n", sum);
    return 0;
}
輸出結(jié)果
二進(jìn)制轉(zhuǎn)換為十進(jìn)制
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谆构,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子框都,更是在濱河造成了極大的恐慌搬素,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異熬尺,居然都是意外死亡摸屠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門粱哼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來季二,“玉大人,你說我怎么就攤上這事揭措〗渖担” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵蜂筹,是天一觀的道長需纳。 經(jīng)常有香客問我,道長艺挪,這世上最難降的妖魔是什么不翩? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮麻裳,結(jié)果婚禮上口蝠,老公的妹妹穿的比我還像新娘。我一直安慰自己津坑,他們只是感情好妙蔗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著疆瑰,像睡著了一般眉反。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上穆役,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天寸五,我揣著相機(jī)與錄音,去河邊找鬼耿币。 笑死梳杏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的淹接。 我是一名探鬼主播十性,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼塑悼!你這毒婦竟也來了劲适?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對情侶失蹤拢肆,失蹤者是張志新(化名)和其女友劉穎减响,沒想到半個(gè)月后靖诗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡支示,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年刊橘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颂鸿。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡促绵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嘴纺,到底是詐尸還是另有隱情败晴,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布栽渴,位于F島的核電站尖坤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏闲擦。R本人自食惡果不足惜慢味,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望墅冷。 院中可真熱鬧纯路,春花似錦、人聲如沸寞忿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腔彰。三九已至叫编,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間萍桌,已是汗流浹背宵溅。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留上炎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓雏搂,卻偏偏與公主長得像藕施,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子凸郑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容