データ構造10進数から2進数への変換(シーケンススタックの設計と応用)
10696 ワード
順序スタックを設計し、与えられた10進数をバイナリに変換して出力する.
関数インターフェースの定義:
審判試験手順の例:
私の答え
関数インターフェースの定義:
#define MaxSize 100 /* */
int top; /* */
int mystack[MaxSize]; /* */
/* , true, false */
bool isEmpty();
/* x */
void Push(int x);
/* */
int getTop();
/* */
void Pop();
ここで、MaxSizeとtopはそれぞれスタックの最大容量とスタックトップポインタである.配列mystackはシーケンススタックをシミュレートするために用いられる.与えられたisEmpty、Push、get Top、Popの4つの関数を実現してください.審判試験手順の例:
#include
using namespace std;
#define MaxSize 100 /* */
int top; /* */
int mystack[MaxSize]; /* */
/* , true, false */
bool isEmpty();
/* x */
void Push(int x);
/* */
int getTop();
/* */
void Pop();
/* */
void dec2bin(int x) {
top = -1; /* */
while (x) {
Push(x % 2);
x >>= 1;
}
while (!isEmpty()) {
int t = getTop();
Pop();
printf("%d", t);
}
printf("
");
}
int main(int argc, char const *argv[])
{
int n;
while (scanf("%d", &n) != EOF) {
dec2bin(n);
}
return 0;
}
/* */
入力例:10出力例:1010私の答え
bool isEmpty()
{
if (top == -1)
return true;
else
return false;
}
/* x */
void Push(int x)
{
if (top == MaxSize - 1)
return;
else
{
top++;
mystack[top] = x;
}
}
/* */
int getTop()
{
if (top == -1)
return 0;
else
return mystack[top];
}
/* */
void Pop()
{
if (top == -1)
return;
else
top--;
}