c++描述将一个2进制数转化成10进制数(用到初始化栈,进栈,入栈)
- /*
- 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进制数(用到初始化栈,进栈,入栈)的更多相关文章
- C#中2、8、16进制 有符号转换10进制正负数
曾经让我苦想的其他进制转有符号整型问题,结果自己想到方法解决后才发现原来如此简单. 1.Int16(2个byte长度 ) : 方法 :Convert.ToInt16(进制编码,进制) a.16进制转1 ...
- c语言将2进制数转化为10进制数(栈的初始化,进栈,出栈)
//c语言描述 将2进制转化为10进制 #include <stdio.h> #include <stdlib.h> #include <math.h> #defi ...
- python进制转化函数,10进制字符串互转,16进制字符串互转
来了老弟,emmmmm,今天想到平时经常用到编码转化,把字符串转化为16进制绕过等等的,今天想着用python写个玩,查询了一些资料,看了些bolg 上面的两个函数是将二进制流转化为16进制,data ...
- 十进制和n进制的转换(10进制转换为36进制)
答案如下: void Convert() { map<int ,string> maps; maps[0]="0"; maps[1]="1"; ma ...
- (高精度运算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_ ...
- C语言实现字符串中(10进制和16进制)转成十进制数
如何将字符串中的10进制数和16进制数提取出来,看以下代码: #include <stdio.h> typedef char TUINT8 ; typedef int TUINT32; T ...
- Javascript 16进制转有符号的10进制整数
在赶项目中开发一个单片机对应的数据接口,需要将一个两字节的十六进制转化为-256~255的10进制数.百度了好久都没有对应且简明的教程,干脆就自己写一篇. 我们都知道JavaScript整数类型有 ...
- 16进制字符串和byte数组进行相互转换\将10进制转换为任意进制
16进制字符串和byte数组进行相互转换 简介 1个byte对应8个bit,16进制使用4个bit,所以一个byte转成16进制,占用两位. JAVA代码 private static final c ...
- 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 ...
随机推荐
- iwpriv
AuthMode {OPEN,SHARED,WEPAUTO,WPAPSK,WPA2PSK,WPANONE} ::Set Authentication Mode EncrypTy ...
- C基础--函数参数副本
转自:http://blog.csdn.net/chujiangke001/article/details/38553173 void GetMemory(char *p, int num) { p ...
- 兼容所有浏览器---无缝上下左右交叉运动----原生js+css
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- Excel 操作类
转载:http://www.cnblogs.com/fellowcheng/archive/2010/08/21/1805158.html ExcelHelper(Excel2007) Code hi ...
- PLSQL_性能优化系列05_Oracle Hint提示
2014-06-20 Created By BaoXinjian
- Codeforces Round #356 (Div. 2)A. Bear and Five Cards(简单模拟)
A. Bear and Five Cards time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- ZOJ 3601 Unrequited Love 浙江省第九届省赛
Unrequited Love Time Limit: 16 Seconds Memory Limit: 131072 KB There are n single boys and m si ...
- Yii2.0 实现三级联动 [ 2.0 版本 ]
view中代码 <?php use yii\bootstrap\ActiveForm; /* @var $this yii\web\View */ /* @var $form yii\boots ...
- python 抓取javascript 动态数据
1. 新安装一个python库 :~$ sudo pip install seleniumhq 2. 编写代码: 以获取百度百科点赞数为例 import selenium from selenium ...
- Access“存储过程"参数顺序要与执行代码生成的参数顺序一致
OleDbParameter olp; OleDbCommand cmd = new OleDbCommand("insertYjsData"); olp = new OleDbP ...