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

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

函数接口定义:

#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--;//其他情况只要栈顶指针减一即可 
};
posted @   ekertree  阅读(990)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示