数据结构之【栈】+十进制转d进制(堆栈数组模拟)
其实这篇文章开出来主要是水文章%% %%
栈——后进先出的婊
特点:只能在某一端插入和删除的特殊的线性表
操作:进栈——PUSH—>向栈顶插入元素
出栈——POP——>将栈顶元素删除
实现:
定义一个长为n的数组,用一个top(相当于指针)指向栈顶,若top=0,则表示栈空;top=n,则表示栈满。
进栈时top+1,出栈时top-1. 栈指针(top)在运算中永远都指向栈顶
若top>n(n为栈的长度),则为溢出,做出错处理;若top<0,则为下溢,同样做出错处理
【具体讲就是——进栈时——>检查栈是否已满(top是否等于n)——>不满则进栈,满则做出错处理】
【出栈时——>检查栈是否为空(top是否等于0)——>不为空则出栈,栈空则做出错处理】
大致实现如下:
#dfine n 100 void push(int s[],int top,int x)
{
if(top==n)
cout<<"overflow";
else
{
top++;
s[top]=x;
}
} void pop(int s[],int top,int x)
{
if(top==0)
cout<<"underflow";
else
{
y=s[top];
top--;
}
}
十进制转d进制
刷666的都坐下,基本操作
我们用类似于堆栈数组模拟的办法来实现十进制转d进制
【算法原理:对十进制下的n转为d进制时,有:n=(n/d)*d+n%d】(好吧其实就是短除法)
如(1348)10——>(2504)8
①1348/8==168 1348%8==4 ^
②168/8==21 168%8==0 ^ | ^
③21/8==2 21%8==5 |
④2/8==0 2%8==2 |
按着箭头方向,倒着输出结果,就是(1348)10——>(2504)8 的过程了
程序实现如下:
#include<cstdlib>
#include<iostream>
using namespace std;
#dfine size 100
int a[size+1],n,d,i=0;
int main()
{
cout<<"please enter a number(N) base 10:";
cin>>n;
cout<<endl;
cout<<"please enter a number(d):"
cin>>d;
do
{
a[++i]=n%d;
n=n/d;
}
while(n!=0);
for(int j=i;j>=1;j--)
{
cout<<a[j];
} return 0;
}
//栈的应用:
1、用一个指针来记录“栈顶”;
2、将元素入栈,然后出栈,达到倒序输出的目的;
数据结构之【栈】+十进制转d进制(堆栈数组模拟)的更多相关文章
- 十进制转n进制
#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 #define TRUE 1 #defi ...
- ->code vs 1474 十进制转m进制
1474 十进制转m进制 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 Description 将十进制数n转换成m进 ...
- wikioi 1474 十进制转m进制
/*===================================== 1474 十进制转m进制 题目描述 Description 将十进制数n转换成m进制数 m<=16 n<=1 ...
- 十进制转为x进制的递归代码
十进制转为x进制的递归代码 #include <stdio.h> void fun(int n,int x) { ) return; else { fun(n/x,x); printf(& ...
- 1474 十进制转m进制
1474 十进制转m进制 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 题目描述 Description 将十进制数n转换成m进制数 m ...
- C++十进制到任意进制
#include<stdio.h> #include<string.h> #include<math.h> #include<iostream> #in ...
- [leetcode]168. Excel Sheet Column Title表格列名编码(十进制和多进制相互转换)
其实就是一道,十进制转多进制的题 十进制转多进制就是从后边一位一位地取数. 这种题的做法是,每次用n%进制,相当于留下了最后一位,然后把这位添加到结果最前边.结果需要转为进制的符号. 下一次循环的n变 ...
- 将n进制的数组压缩成字符串(0-9 a-z)同一时候解压
比如一个3进制的数组: [1 1 2 2 2 0 0] 用一个字符串表示... 此类题目要明白两点: 1. 打表:用数组下标索引字符.同一时候注意假设从字符相应回数字: int index = (st ...
- java:数据结构(二)栈的应用(进制转换全收集)
说到进制转换,java已经封装了基本的方法,在竞赛中使用封装的方法自然能节省大量时间 另一位仁兄介绍的封装好的方法: https://blog.csdn.net/m0_37961948/article ...
随机推荐
- 基于winsocket的框体Server和Client
前面学了一点Winsock的知识,会编写简单的Server和Client,现在就想通过VS2008编写框体的Server和Client,而不是在控制台上的操作了,毕竟学编程就是要多加练习,在实践中发现 ...
- 在找一份相对完整的Webpack项目配置指南么?这里有
Webpack已经出来很久了,相关的文章也有很多,然而比较完整的例子却不是很多,让很多新手不知如何下脚,下脚了又遍地坑 说实话,官方文档是蛮乱的,而且有些还是错的错的..很多配置问题只有爬过坑才知道 ...
- two.js之实现动画效果
一.什么是two.js? Two.js 是面向现代 Web 浏览器的一个二维绘图 API.Two.js 可以用于多个场合:SVG,Canvas 和 WebGL,旨在使平面形状和动画的创建更方便,更简洁 ...
- 数据结构--汉诺塔递归Java实现
/*汉诺塔递归 * 1.将编号0-N-1个圆盘,从A塔座移动到B上面 * 2.将编号N的1个圆盘,从A移动到C上面 * 3.最后将B上面的N-1个圆盘移动到C上面 * 注意:盘子的编号从上到下1-N ...
- 添加无登录权限的SSH用户命令
useradd -M -s /sbin/nologin -n username passwd username userdel -r username
- IDEA搭建SSMM框架(详细过程)
IDEA搭建SSMM框架(详细过程) 相关环境 Intellij IDEA Ultimate Tomcat JDK MySql 5.6(win32/win64) Maven (可使用Intellij ...
- 线上Mysql数据库崩溃事故的原因和处理
前文提要 承接前文<一次线上Mysql数据库崩溃事故的记录>,在文章中讲到了一次线上数据库崩溃的事件记录,建议两篇文章结合在一起看,不至于摸不着头脑. 由于时间原因,其中只讲了当时的一些经 ...
- openstack学习心得:keystone 常用命令(M版)
查看用户列表 openstack user list 查看用户具体信息 usage: openstack user show [-h] [-f {html,json,json,shell,table, ...
- 五:用JAVA写一个阿里云VPC Open API调用程序
用JAVA写一个阿里云VPC Open API调用程序 摘要:用JAVA拼出来Open API的URL 引言 VPC提供了丰富的API接口,让网络工程是可以通过API调用的方式管理网络资源.用程序和软 ...
- 聊下 git 多账户问题
git 多账户问题 标签(空格分隔):git github gitlab git多账户 背景 git 多账号配置 ssh 多密钥对配置 背景 在使用 git 的时候我们都会面临多账户问题,比较常见的就 ...