データ構造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--;
}