十进制转二进制(顺序栈设计和应用)

设计一个顺序栈,并利用该顺序栈将给定的十进制整整数转换为二进制并输出。

函数接口定义:

#define MaxSize 100    /* 栈最大容量 */
int top;        /* 栈顶指针 */
int mystack[MaxSize];    /* 顺序栈 */

/*判栈是否为空,空返回true,非空返回false */
bool isEmpty();

/* 元素x入栈 */
void Push(int x);

/* 取栈顶元素 */
int getTop();

/* 删除栈顶元素 */
void Pop();

其中 MaxSizetop 分别为栈的最大容量和栈顶指针。数组mystack 用来模拟顺序栈。请实现给出的isEmptyPushgetTopPop这四个函数。

裁判测试程序样例:

#include <bits/stdc++.h>
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("\n");
}

int main(int argc, char const *argv[])
{
    int n;
    while (scanf("%d", &n) != EOF) {
        dec2bin(n);
    }
    return 0;
}

/* 请在这里填写答案 */

输入样例:

10



结尾无空行

输出样例:

1010



结尾无空行

Answer

/*判栈是否为空,空返回true,非空返回false */
bool isEmpty() {
	if(top == -1)//如果栈顶指针是-1则没有元素为空 
		return true;
	else
		return false;
};

/* 元素x入栈 */
void Push(int x) {
	if(top+1 > MaxSize) {//栈顶指针是指向栈顶元素上一个位置,则只要栈顶指针+1大于顺序栈数组最大数则栈满 
		printf("栈已满!");
		return; 
	}
	if(top == -1) {
		mystack[++top] = x;//如果是空栈,需要让栈顶指针先加一指向0,再入栈 
		top++;//栈顶指针是指向栈顶元素上一个位置,则还需要再加一 
		
	}else{
		mystack[top++] = x;//其他情况则只用先入栈后,栈顶指针再加一即可 
	}
};

/* 取栈顶元素 */
int getTop() {
	return mystack[top-1];//栈顶指针减一的位置即为栈顶元素 
};

/* 删除栈顶元素 */
void Pop() {
	if(top == 1)
		top = -1;//如果只剩一个元素,只用让栈顶指针为-1即可 
	else
		top--;//其他情况只要栈顶指针减一即可 
};

原文链接: https://www.cnblogs.com/ekertree/p/15387842.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    十进制转二进制(顺序栈设计和应用)

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/214262

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午2:10
下一篇 2023年2月13日 上午2:10

相关推荐