数据结构之【栈】+十进制转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 ...
随机推荐
- 逆向课程第二讲,寻找main入口点
逆向课程第二讲,寻找main入口点 一丶识别各个程序的入口点 入门知识,识别各个应用程序的入口点 (举例识别VC 编译器生成,以及VS编译生成的Debug版本以及Release版本) 1.识别VC6. ...
- .Net 上传图片之前获取图片的宽高
Stream st = Request.Files[0].InputStream; Byte[] buffer = new Byte[st.Length]; ...
- 「JavaScript」同步、异步、回调执行顺序之经典闭包setTimeout分析
聊聊同步.异步和回调 同步,异步,回调,我们傻傻分不清楚, 有一天,你找到公司刚来的程序员小T,跟他说:“我们要加个需求,你放下手里的事情优先支持,我会一直等你做完再离开”.小T微笑着答应了,眼角却滑 ...
- 05).30分钟学会Servlet+过滤器+监听器+实际案例
一.Servlet简介: Servlet程序处理流程 二.Servlet程序实现 实现要求 Servlet属于java ee范畴,而java和javac属于java se范畴,要想编译servlet必 ...
- 使用javax.script包实现Java设置JS脚本中的变量
下面例子中,我们通过javax.script包ScriptEngine.put()方法设置JS脚本中的变量,JS把所有在线用户输出. package ajava.code.javase; import ...
- C#执行批处理命令
using System.Diagnostics ; using System.IO; private void btnRun_Click(object sender, EventArgs e) ...
- Ext3和Ext4文件系统区别
inode http://www.cnblogs.com/itech/archive/2012/05/15/2502284.html Ex3使用15个inode查询数据块,前12个为直接数据块,直接指 ...
- System.Transactions 事务超时属性
最近遇到一个处理较多数据的大事务,当进行至10分钟左右时,爆出事务超时异常,如果Machine.config中不设置最大超时时间,则默认超时时间为10分钟 MachineSettingsSection ...
- 转载:一位资深程序员大牛给予Java初学者的学习路线建议
一位资深程序员大牛给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打 ...
- mac 安装protobuf,并编译
因公司接口协议是PB文件,需要将 PB 编译成JAVA文件,且MAC 电脑,故整理并分享MAC安装 google 下的protobuf 文件 MAC 安装protobuf 流程 1.下载 http ...