久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 棧的操作--將二進制數轉化為十進制數輸出-C語言教程 [打印本頁]

作者: 51黑ren    時間: 2015-12-20 02:48
標題: 棧的操作--將二進制數轉化為十進制數輸出-C語言教程
//  這是一個“棧”操作的例子源碼:

#include"stdio.h"#include"stdlib.h"//exit(0),malloc()
#include"math.h"//pow(int a ,int b);a的b次方
/*
將PC鍵盤輸入的二進制數轉化為十進制數輸出,以“#”作為結束符;
將鍵盤輸入的0或1視為字符,ACSII碼字符0對應的十六進制數是0x48
*/
#define STACK_INIT_SIZE 20
#define STACKINCRESIZE  10
typedef char ElemType;//創建一個類型,下面凡事ElemType都代表char類型
//聲明一個棧類型數據結構,元素是棧的3個基本要素
struct qstack
{
   ElemType  *top; //棧頂指針,字節指針
   ElemType  *base; //棧底指針
   int stacksize; // 棧的容量
};

//通過這個函數將棧的三要素進行初始化
void Stack_Iinit(qstack *s)
{
   s->base=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType));
   if(!s->base)//如果內存分配失敗
   {
     printf("內存分配失敗!");
exit(0);//
   
   }
   s->top=s->base; //
   s->stacksize = STACK_INIT_SIZE;//

}

void push(qstack *s,ElemType e)//注意傳入的類型
{
  if(s->top-s->base >= s->stacksize )//說明棧已經滿了
  {
     s->base=(ElemType *)realloc(s->base,(STACK_INIT_SIZE+STACKINCRESIZE)*sizeof(ElemType));
//重新分配空間,注意空間加大了

  }
  *(s->top)=e;//
  s->top++;

}

void pop(qstack *s,ElemType *e)//將出棧數據放在e中,所以形參用指針為宜
{
if(s->top==s->base)//
{
    return;

}
*e=*--(s->top);//注意!括號不要搞錯!否則結果出錯!
}
//
int StackLen(qstack *s)
{
return (s->top-s->base);//棧的長度
}
//注意:用鍵盤輸入“0”和“1”字符時,以“#”結束。比如輸入:“1110#”按回車鍵就可以得出答案
void main()
{
    qstack s;
ElemType c;
int i,len,sum=0;
    Stack_Iinit(&s);
printf("請輸入0或1字符,以#作為結束符\n");
scanf("%c",&c);//注意!本句表示一次輸入一個字符
  /*
  注意:比如輸入“1110010#”再按下回車鍵,字符串“1110010#”就以一次一個字符的順序輸入到PC鍵盤緩沖區即入棧;
  出棧時是以“后進先出”的順序出棧,剛好最后入棧的字符就是二進制的最低位。對于棧的操作一定要注意入棧出棧順序
*/
while(c!='#')
{
      push(&s,c);
  scanf("%c",&c);//這里為什么還要此句呢?因為scanf()一次只能輸入一個字符,所以必須循環輸入


}
getchar();//改變鍵盤輸入緩存指針,即將回車鍵讀出來,這樣可以避免“\r”字符(回車鍵)輸出
    len= StackLen(&s);
printf("當前棧的容量是:%d\n",len);
for(i=0;i<len;i++)
{
   pop(&s, &c );
   sum = sum + (c-48)*pow(2,i);//48對應ACSII碼字符“0”;(c-48)的值要么是0要么是1字符
}
printf("轉換的十進制數是:%d\n",sum);

}

/////////////////////////////////////-----------------GKXW---------2015年11月14日 00:03:08--//////////////////////////////////////////



     棧(stack)是一種“后進先出”的數據結構,屬于線性表的一種,只能在一頭操作。在現實生活中應用很大,多學習一種數據結構就意味著多一種能力。本來是要分析uc/os-ii操作系統的,但是由于在學習STeMwin的時候涉及到文件系統的操作,所以就專門學習了C語言文件部分內容。計劃不得不推遲了。程序好不好關鍵就看數據結構用得合不合理,編程實際上就是數據的怎樣存儲,以什么數據結構存儲的問題。《數據結構與算法》是修煉內功的,是對計算機語言學習的一種提高。

      





作者: IT_小王    時間: 2020-11-29 21:46
非常感謝  讓我對其中有些語句更加明白了




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久综合狠狠综合久久 | 一级片在线免费看 | 欧美在线一区二区三区 | 99精品99久久久久久宅男 | 欧美1页| 狠狠综合久久av一区二区老牛 | 免费成人高清在线视频 | www.se91| h视频在线看 | 99视频在线免费观看 | 国产中文字幕在线观看 | 亚洲一区二区在线播放 | 91视频在线 | 国产精品久久久久久久久久三级 | 国产精品一区二区欧美 | 免费一区二区在线观看 | 日韩欧美一区二区三区免费观看 | 国产黄色在线观看 | 国产极品粉嫩美女呻吟在线看人 | 亚洲国产精品一区二区三区 | 国产精品欧美一区二区三区 | 1级毛片| 日韩三级在线观看 | 国产精品免费在线 | 精品毛片在线观看 | 欧美aaa一级片 | 日本精品视频 | 美女天天干 | 国产精品久久久久久网站 | 91精品国产92 | 久久久99国产精品免费 | av香港经典三级级 在线 | av网站在线播放 | 网址黄| 久久蜜桃av一区二区天堂 | 极品粉嫩国产48尤物在线播放 | 永久免费视频 | 国产一区二区毛片 | 免费精品视频在线观看 | 国产精品不卡一区 | 成人免费精品视频 |