棧結構的邏輯結構為線性的,可建立鏈式結構使得入棧、出棧的操作是動態的,也可以很好地實現進製的轉換。而且進製轉換恰好和棧的輸入輸出輸出類似,故選擇棧是最好的。
功能:該函式實現建立初始化的棧。
具體過程:
1.建立乙個棧結構體指標s;
2.將s指標指向的s->top賦予-1,即定義棧頂初始為空。
功能:該函式實現判斷棧是否為空,棧為空則返回1,否則返回0。
功能:該函式實現判斷棧是否為空,棧為滿則返回1,否則返回0。
功能:該函式實現將元素依次入棧放於棧頂位置s->top。
具體過程:
1.先判斷棧是否滿,若棧已滿,則不能執行入棧操作,返回0;
2.若棧不滿,則將棧頂指標向上移,將元素入棧到棧頂位置。
功能:該函式實現將棧頂位置元素依次出棧。
具體過程:
1.先判斷棧是否為空,若棧為空,則不能執行出棧操作,返回0;
2.若棧不為空,則將棧頂指標向下移,將棧頂位置元素出棧。
功能:該函式實現將輸入的十進位制正整數轉換為r進製數。
具體過程:
1.先判斷棧是否為空,若棧為空,則不執行進製轉換,返回0;
2.若棧不為空,則根據入棧的棧頂元素的大小,決定出棧的元素。若入棧棧頂元素小 於10,則直接輸出;
若入棧棧頂元素為10/11/12/13/14/15,輸出a/b/c/d/e/f;
#include#define sm 110 //定義sm的值
#include #include #includetypedef struct mystack//定義結構體
sqstack;//結構體簡稱
sqstack *init_seqstack() //初始化棧
int isfull(sqstack *t)//判滿
return 0; //否則返回0
}int note(sqstack *t)//判空
return 0; //否則返回0 }
int pop1(sqstack *t,int data)//入棧
return 0; //否則結束入棧 }
int push1(sqstack *t,int *data)//出棧
else return 0; //否則結束出棧
} int zhuan(sqstack *t) //進製轉換
data--;
} } }
int main() //主函式
zhuan(t);//將棧裡的值進行轉換
while(1)
printf("\n");
}
char陣列轉化為十進位制整數
通過一些通訊方式傳輸的資料 比如 串列埠傳輸 有時候會儲存為char型別的資料資料,我們需要把char陣列中的所有資料轉化為int整數,方法一是直接通過移位運算來實現 char c 4 char t int num 0 int len sizeof c 2 char d sizeof c 2 for...
十進位制整數與二進位制整數 十六進製制整數之間的轉換
十進位制整數 如85 要轉換成二進位制我們最原始的方法呢就是短除法,但是當這個十進位制數比較大時短除法就有些麻煩了。其實可以這樣來計算 如85 64 16 4 1 2 6 1 2 4 1 2 2 1 2 0 1,二進位制最低位從第0位開始 以8位二進位制為例 式子中2的冪次對應第幾位第幾位就寫上1,...
理解十進位制整數轉二進位制整數
演算法 第四版 中的習題 1.3.5 中有這樣一段 stacks new stack while n 0 for int d s system.out.print d system.out.println 其作用是列印十進位制整數 n 的二進位制表示。下面解釋該演算法背後的道理。為簡化問題,預設輸入...