資料結構4 利用棧的結構,將二進位制數轉換為十進位制數

2021-06-25 20:48:58 字數 1081 閱讀 1749

編寫乙個程式,利用棧的結構,將二進位制數轉換為十進位制數,**如下:

#include"stdio.h"

#include"math.h"

#define stack_init_size 20

#define stackincrement 10

typedef char elemtype;

typedef structsqstack;

initstack(sqstack *s)

push(sqstack *s,elemtype e)

*(s->top)=e; /*放入資料*/

s->top++;

}pop(sqstack *s,elemtype *e)

int stacklen(sqstack s)

main()

getchar();

len = stacklen(s); /*得到棧中的元素個數,即二進位制數的長度*/

for(i=0;i

執行的結果如下圖:

例項與分析:

1.出棧的時候有乙個引數為什麼是elemtype *e,而不是elemtype e?而為什麼進棧的時候是elemtype e?不知道大家想過這個問題沒有?原因很簡單,是因為在函式當中傳遞的都是形參,而形參是不能被傳遞出去的,能傳遞出去的話只能傳遞位址,這就解釋了為什麼出棧的時候是elemtype *e,因為e這個值我們是要從函式傳遞出去的,而在入棧的時候我們僅僅是要使用而已。

注:我突然想起來在資料結構3那篇文章裡面有乙個地方沒有說明白,就是函式insertlist()的引數中有乙個linklist *list,為什麼是linklist *list而不是linklist list。由於linklist *list是指向linklist型別的指標變數,相當於指向lnode型別的指標的指標。這是因為在函式中要對list,也就是表頭指標進行修改,而呼叫該函式時,實參是&list,而不是list。因此必須採取指標引數傳遞的辦法,否則無法在被調函式中修改主函式中定義的變數的內容。

資料結構 二進位制索引樹

1 2 解釋 binary indexed tree made easy hackerearth 3 應用 1 leetcode 求翻轉對 2 算數編輯器 先記思路之後整理 1 乙個整數可以用一組 2 的平方和表示 2 hamming weight is the number of 1 s in t...

Python二進位制資料結構Struct的具體使用

目錄 在c c 語言中,struct被稱為結構體。而在python中,struct是乙個專門的庫,用於處理位元組串與原生python資料結構型別之間的轉換。本篇,將詳細介紹二進位制資料結構struct的使用方式。struct庫包含了一組處理結構值得模組級函式,以及乙個struct類。格式指示符將由字...

利用棧結構計算十進位制轉化二進位制

棧的順序表示實現 include include 棧初始大小 define stack init size 100 棧的增長大小 define stackincrement 10 define overflow 0 define error 0 define false 0 define true ...