/*
c++描述将2进制数转化成10进制数
问题,1.初始化栈后,用new,不知道delete是否要再写一个函数释放内存,
还是在哪里可以加上delete
2.如果栈满了,我要分配多点空间,我想的办法是先用delete删除之前申请的
空间,再用new重新申请,但是c语言有一个函数
s->base =(ElemType*) realloc(s->base,(s->stackSize + STACKINCREMENT) * sizeof(ElemType));//分配空间
不知道c++有没有這样的函数。
*/
#include <iostream>
#include <math.h>
using namespace std; const int STACK_INIT_SIZE=;
const int STACKINCREMENT=; typedef char ElemType; //定义一个字符串,因为二进制只有0和1,0的ascii表为48 ,1为49,
//只要进栈元素减去48再乘以2的次方数就ok typedef struct
{
ElemType* top; //栈顶
ElemType* base ; // 栈底
int stackSize; // 栈的容量
}sqStack; void InitStack (sqStack *s) //初始化栈
{
try
{
s -> base = new ElemType [STACK_INIT_SIZE] ; //申请空间
s -> top = s -> base ; //栈空 ,栈顶等于栈底
s -> stackSize = STACK_INIT_SIZE;
} catch (bad_alloc)
{
cout << "分配空间失败!"<< endl;
exit ();
}
} void Push (sqStack *s ,ElemType e) // 进栈
{
try{
if (s -> top - s -> base >= s->stackSize)
{
delete s -> base; // 删除先前分配的空间再重新分配
s -> base = new ElemType[STACK_INIT_SIZE+STACKINCREMENT];
}
*(s->top) = e; //先赋值再将栈顶往上移动
s->top++;
}
catch (bad_alloc){
cout << "分配空间失败!"<< endl;
exit ();
}
} void Pop(sqStack *s, ElemType *e)
{
if (s -> top == s -> base)
{
cout << "栈为空"<<endl;
exit();
} s -> top --; //先将栈顶指向元素,再把元素赋值给形参
*e= * s->top; // *e = *--(s->top); } int StackLen (sqStack s) //返回栈有多少个元素
{
return ( s.top - s.base); // 实质是地址相减 除以ElemType
} int main()
{
ElemType c; //声明一个字符c
sqStack s; //声明一个结构体s int len,i,sum=;
InitStack(&s); //初始化栈
cout <<"请输入二进制数,输入#结束"<<endl;
cin >>c;
while( c != '#')
{
Push (&s,c);
cin>>c;
}
getchar(); //接收回车键
len =StackLen(s);
cout <<"栈的当容量"<<len<<endl;
for(i=; i<len ; i++)
{
Pop(&s,&c);
sum = sum + (c-) * pow(,i);
}
cout <<"转化为十进制数为:"<<sum<<endl; return ;
}

c++描述将一个2进制数转化成10进制数(用到初始化栈,进栈,入栈)的更多相关文章

  1. C#中2、8、16进制 有符号转换10进制正负数

    曾经让我苦想的其他进制转有符号整型问题,结果自己想到方法解决后才发现原来如此简单. 1.Int16(2个byte长度 ) : 方法 :Convert.ToInt16(进制编码,进制) a.16进制转1 ...

  2. c语言将2进制数转化为10进制数(栈的初始化,进栈,出栈)

    //c语言描述 将2进制转化为10进制 #include <stdio.h> #include <stdlib.h> #include <math.h> #defi ...

  3. python进制转化函数,10进制字符串互转,16进制字符串互转

    来了老弟,emmmmm,今天想到平时经常用到编码转化,把字符串转化为16进制绕过等等的,今天想着用python写个玩,查询了一些资料,看了些bolg 上面的两个函数是将二进制流转化为16进制,data ...

  4. 十进制和n进制的转换(10进制转换为36进制)

    答案如下: void Convert() { map<int ,string> maps; maps[0]="0"; maps[1]="1"; ma ...

  5. (高精度运算4.7.26)POJ 1220 NUMBER BASE CONVERSION(高精度数的任意进制的转换——方法:ba1----->10进制----->ba2)

    package com.njupt.acm; import java.math.BigInteger; import java.util.Scanner; public class POJ_1220_ ...

  6. C语言实现字符串中(10进制和16进制)转成十进制数

    如何将字符串中的10进制数和16进制数提取出来,看以下代码: #include <stdio.h> typedef char TUINT8 ; typedef int TUINT32; T ...

  7. Javascript 16进制转有符号的10进制整数

    在赶项目中开发一个单片机对应的数据接口,需要将一个两字节的十六进制转化为-256~255的10进制数.百度了好久都没有对应且简明的教程,干脆就自己写一篇.   我们都知道JavaScript整数类型有 ...

  8. 16进制字符串和byte数组进行相互转换\将10进制转换为任意进制

    16进制字符串和byte数组进行相互转换 简介 1个byte对应8个bit,16进制使用4个bit,所以一个byte转成16进制,占用两位. JAVA代码 private static final c ...

  9. python中2进制、10进制、16进制等之间的转换

    10转2: bin(8) # '0b1000' 2转10: int( 10转16: hex(15) # '0xf' 16转10: int( 2进制和16进制中间通过转10进制可以相互转换 from b ...

随机推荐

  1. TCP/IP四层模型和OSI七层模型的概念

    转:http://blog.csdn.net/superjunjin/article/details/7841099/ TCP/IP四层模型 TCP/IP是一组协议的代名词,它还包括许多协议,组成了T ...

  2. 黄聪:主机宝安装wordpress注意事项

    1.web环境安装PHP使用5.4.21-nts-03版本 2.web环境安装Mysql使用5.5.45版本 3.创建好站点后,给站点的public_html目录添加IIS_xxx用户最高权限,添加N ...

  3. 黄聪:C#设置窗体打开位置(在显示器的右下角打开)

    ; ; this.SetDesktopLocation(x, y); 注释:System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Size.Wid ...

  4. Ruby1.9.3-下载网络图片至本地,并按编号保存。

    #本程序功能:下载网络图片至本地,并按编号保存. #使用Ruby1.9.3在winxp_sp3下编写. require 'nokogiri' require 'open-uri' #以下 根据网址解析 ...

  5. PageRank算法

    PageRank,网页排名,又称网页级别,传说中是PageRank算法拯救了谷歌,它是根据页面之间的超链接计算的技术,作为网页排名的要素之一.它通过网络浩瀚的超链接关系来确定一个页面的等级.Googl ...

  6. DBA_Oracle LogMiner分析重做和归档日志(案例)

    2014-08-19 Created By BaoXinjian

  7. ubuntu vi上下左右键无法使用?

    使用vm安装ubuntu出现vi上下左右键无法正常使用. 执行以下两句就可以了 $sudo apt-get remove vim-common    $sudo apt-get install vim

  8. 开发工具及服务年度大奖评选 I Bugtags 荣获最具成长潜力奖

    作为全球最大中文 IT 社区和服务平台.中国最大技术管理者平台的 CSDN 在中国北京总部举办了一场 2015 年开发工具及服务年度大奖评选活动,此次活动目的在于推动开发服务及工具质量的提升,提高行业 ...

  9. C API 连接MYSQL

    #include <iostream> #include <mysql.h> #include <string> #include <assert.h> ...

  10. js中表单提交后按钮变灰色的功能

    表单提交后按钮变成灰色 http://www.111cn.net/wy/js-ajax/45299.htm