最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

數(shù)據(jù)結(jié)構(gòu) 中數(shù)制轉(zhuǎn)換(棧的應(yīng)用)

 更新時(shí)間:2017年06月28日 17:01:36   投稿:lqh  
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu) 中數(shù)制轉(zhuǎn)換(棧的應(yīng)用)的相關(guān)資料,需要的朋友可以參考下

數(shù)據(jù)結(jié)構(gòu) 中數(shù)制轉(zhuǎn)換(棧的應(yīng)用)

問題描述:

 將一個(gè)非負(fù)的十進(jìn)制整數(shù)N轉(zhuǎn)換為另一個(gè)等價(jià)的基為B的B進(jìn)制數(shù)的問題。

解答:按除2取余法,得到的余數(shù)依次是1、0、1、1,則十進(jìn)制數(shù)轉(zhuǎn)化為二進(jìn)制數(shù)為1101。

     分析:由于最先得到的余數(shù)是轉(zhuǎn)化結(jié)果的最低位,最后得到的余數(shù)是轉(zhuǎn)化結(jié)果的最高位,因此很容易用棧來解決。

代碼如下:

#include<stdio.h> 
#include<malloc.h> 
#include<stdlib.h> 
typedef struct Node 
{ 
 int data; 
 struct Node * pNext; 
}NODE ,*PNODE; 
typedef struct Stack 
{ 
 PNODE pTop; 
 PNODE pBottom; 
}STACK,*PSTACK; 
 
bool empty(PSTACK ps) 
{ 
 if(ps->pTop == ps->pBottom) 
 return true; 
 else return false; 
} 
void initstack(PSTACK ps) 
{ 
 ps->pTop=(PNODE)malloc(sizeof(NODE)); 
 if (NULL == ps->pTop) 
 { 
  printf("初始化失敗!\n"); 
  exit(-1); 
 } 
 else 
 { 
 ps->pBottom=ps->pTop; 
 ps->pTop->pNext=NULL; 
 } 
 return ; 
} 
 
void push(PSTACK ps,int val) 
{ 
 PNODE pNew=(PNODE)malloc(sizeof(NODE)); 
 pNew->data=val; 
 pNew->pNext=ps->pTop; 
 ps->pTop=pNew; 
 return; 
} 
void pop(PSTACK ps) 
{ 
 int x; 
 if(empty(ps)) 
 { 
  //printf("出棧失?。?); 
  return ; 
 } 
 else 
 { 
   PNODE p=ps->pTop; 
   x=p->data; 
   ps->pTop=p->pNext; 
   free(p); 
   p=NULL; 
   printf("%d",x); 
   return ; 
 } 
} 
int main() 
{ 
 int i,N,B; 
 STACK S; 
 scanf("%d",&N); 
 scanf("%d",&B); 
 initstack(&S); 
 while(N) 
 { 
  push(&S,N%B); 
  N=N/B; 
 } 
 while(S.pBottom!=NULL) 
 { 
  pop(&S); 
   
 } 
 system("pause"); 
 return 0; 
} 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

最新評論

梅州市| 泗洪县| 吉水县| 灵璧县| 射阳县| 馆陶县| 开远市| 鸡东县| 白河县| 潞城市| 迭部县| 石柱| 湘乡市| 华坪县| 潍坊市| 铁岭市| 孟连| 两当县| 电白县| 顺平县| 宜章县| 大英县| 蒲江县| 睢宁县| 南昌市| 邵阳市| 平塘县| 齐河县| 萍乡市| 南康市| 罗甸县| 贵州省| 张家港市| 南汇区| 绥德县| 滨州市| 克东县| 施秉县| 萨迦县| 武山县| 枣强县|