資料結構 棧的實現 二進位制轉十進位制

2021-10-07 02:42:30 字數 1058 閱讀 1008

學習資料結構的棧之後,為了鞏固加深對棧的理解,通過實現乙個棧的操作來解決二進位制數轉十進位制數的問題,壓棧操作使用輸入流cin來讀入資料,cin會忽略回車符,因此不再需要getchar來對其進行**,相比scanf會更加簡潔方便,直接上**:

#include"stdafx.h"

#include"stdlib.h"

#include"math.h"

#includeusing namespace std;

#define stack_init_size 20 //定義棧的初始大小

#define stackincrement 10 //增加棧容量

typedef char elemtype;

typedef struct

sqstack;

/****初始化棧****/

void initstack(sqstack *s)

s->top = s->base;

s->stacksize = stack_init_size;

}/****壓棧****/

void push(sqstack *s,elemtype e)

*(s->top) = e;

s->top++;

}/****出棧****/

void pop(sqstack *s, elemtype *e)

*e = *--(s->top);

}int stacklen(sqstack s)

int main()

//getchar(); //cin輸入流會忽略回車符,因此不需要使用getchar()**回車符

len = stacklen(s);

cout << "棧的長度為"<**實現了棧的基本操作,同時實現了輸入二進位制數轉化為十進位制數的功能,另外,在使用cin讀入資料時,while迴圈處的**這樣寫編譯出錯:

while(cin>>c)

使用ctrl+z結束輸入流,後續結果出錯或顯示之前正確執行的結果,目前還不清楚問題所在,如果有知道癥結在何處的程式設計師,麻煩指點一二。

二進位制如何轉十進位制,十進位制如何轉二進位制

學計算機的朋友剛開始學習時都要接觸進製之間的轉換,二進位制 十進位制 八進位制 十六進製制等,這個是很枯燥的,轉來轉去就轉矇圈了,別蒙別蒙,今天咱們乙個乙個搞定,看看二進位制和十進位制之間如何相互轉換的。轉成二進位制主要有以下幾種 正整數轉二進位制,負整數轉二進位制,小數轉二進位制 1 正整數轉成二...

二進位制如何轉十進位制,十進位制如何轉二進位制

二進位制如何轉十進位制,十進位制如何轉二進位制 1 正整數轉成二進位制。要點一定一定要記住哈 除二取餘,然後倒序排列,高位補零。也就是說,將正的十進位制數除以二,得到的商再除以二,依次類推知道商為零或一時為止,然後在旁邊標出各步的餘數,最後倒著寫出來,高位補零就ok咧。哎呀,還是舉說明吧,比如42轉...

Python二進位制轉十進位制演算法 十進轉二進位制演算法

二進位制數轉換成十進位制數 二進位制數從右向左每位數乘以2的次方 從0開始,從右向左依次 1 然後相加求和即可 如 0101轉成十進位制為 1 20 0 21 1 22 0 23 1 0 4 0 5 演算法實現 coding utf 8 b raw input 請輸入乙個二進位制數 decode u...