數(shù)據(jù)結(jié)構(gòu) 中數(shù)制轉(zhuǎn)換(棧的應(yīng)用)
數(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)文章
C語言使用setjmp和longjmp實(shí)現(xiàn)一個(gè)簡單的協(xié)程
這篇文章主要為大家介紹了C語言使用setjmp和longjmp實(shí)現(xiàn)一個(gè)簡單的協(xié)程過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
C語言:利用指針編寫程序,用梯形法計(jì)算給定的定積分實(shí)例
今天小編就為大家分享一篇C語言:利用指針編寫程序,用梯形法計(jì)算給定的定積分實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Qt編寫地圖實(shí)現(xiàn)動(dòng)態(tài)點(diǎn)位標(biāo)注的示例代碼
動(dòng)態(tài)點(diǎn)位標(biāo)注是定制的一個(gè)功能模塊,提供直接地圖上選點(diǎn)設(shè)置標(biāo)記點(diǎn),點(diǎn)位信息用結(jié)構(gòu)體存儲(chǔ),其中包括了經(jīng)度、緯度、速度、時(shí)間等信息。本文將介紹實(shí)現(xiàn)這一功能的示例代碼,需要的可以參考一下2022-01-01
C數(shù)據(jù)結(jié)構(gòu)之單鏈表詳細(xì)示例分析
以下是對C語言中的單鏈表進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下2013-08-08
用C++實(shí)現(xiàn),將一句話里的單詞進(jìn)行倒置的方法詳解
本篇文章是對用C++實(shí)現(xiàn),將一句話里的單詞進(jìn)行倒置的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C++類與對象及構(gòu)造函數(shù)析構(gòu)函數(shù)基礎(chǔ)詳解
這篇文章主要為大家介紹了C++類與對象及構(gòu)造函數(shù)析構(gòu)函數(shù)基礎(chǔ)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04

