c++ j将十进制整数转化为十六进制整数 用栈来实现
来源:互联网 发布:韦德五次总决赛数据 编辑:程序博客网 时间:2024/06/16 02:43
这是将十进制整数转化为十六进制整数 并且是用栈来实现的转化过程// 例1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
{
int *base;//指向栈底的指针
int *top;//指向栈顶元素下一个位置的指针
int stacksize;//栈的大小
};
int InitStack(SqStack &S)
{//顺序栈的初始化,构造一个空栈
S.top=S.base=new int[1];
if(S.base==0) return 0;//若申请空间失败,返回0
S.stacksize=1;
return 1;//栈初始化成功,返回1
}
int push(SqStack &S,int e)
{//向栈中压入元素e
if(S.top-S.base==S.stacksize)//栈的空间已满,增加空间
{
int *newbase;
newbase=new int[S.stacksize*2];
if(newbase==0) return 0;
for(int i=0;i<=S.stacksize-1;i++)
{//将原有栈中的元素拷贝到新栈中
newbase[i]=S.base[i];
}
delete S.base;//删除原有栈的空间
S.base=newbase;//原有栈的栈底指针指向新栈空间
S.top=&S.base[S.stacksize];//新栈栈顶元素的下一个位置
S.stacksize*=2;
}
*S.top=e;
S.top++;
return 1;
}
int GetTop(SqStack S)
{//返回栈顶元素
return *(S.top-1);
}
void pop(SqStack &S)
{//从栈S中删除元素
S.top--;
}
bool empty(SqStack S)
{//判断栈是否为空,若是返回true,否则返回false
if(S.base==S.top)
return true;
else return false;
}
void print(SqStack S)
{//打印栈中元素
int *p=S.base;
while(p<S.top)
{
cout<<*p<<" ";
p++;
}
cout<<endl;
}
void DestroyStack(SqStack &S)
{//释放栈所占的空间
delete S.base;
}
void NumTransfrom(int N,char str[])
{//将十进制整数N转化为十六进制数,存储到字符数组str中
int m;//存储商
int n;//存储余数
SqStack S;//定义一个栈变量
InitStack(S);
if(N==0)
{//N是0,十六进制就是0
str[0]='0';
str[1]='\0';
return;
}
while(N!=0)
{
m=N/16;//求商
n=N%16;//求余数
push(S,n);//余数入栈
N=m;
}
int index=0;
while(empty(S)==false)
{
int temp;
temp=GetTop(S);//整数出栈
pop(S);
if(temp>=0&&temp<=9)
str[index]='0'+temp;//整数插入到字符串尾部
else
str[index]='A'+temp-10;//将大于9的数字转化为相应的字母
index++;
}
str[index]='\0';
DestroyStack(S);//释放栈所占的空间
}
int main(int argc, char* argv[])
{
char str[100];
for(int i=0;i<=36;i++)
{
NumTransfrom(i,str);
cout<<"十进制整数"<<i<<"的十六进制整数表示为:"<<str<<endl;
}
return 0;
}
我们通常都是直接用数组来实现然后在将数组中的元素倒置即可,而由于栈就用后进先出的特点,因此本文用栈来实现转化。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
{
int *base;//指向栈底的指针
int *top;//指向栈顶元素下一个位置的指针
int stacksize;//栈的大小
};
int InitStack(SqStack &S)
{//顺序栈的初始化,构造一个空栈
S.top=S.base=new int[1];
if(S.base==0) return 0;//若申请空间失败,返回0
S.stacksize=1;
return 1;//栈初始化成功,返回1
}
int push(SqStack &S,int e)
{//向栈中压入元素e
if(S.top-S.base==S.stacksize)//栈的空间已满,增加空间
{
int *newbase;
newbase=new int[S.stacksize*2];
if(newbase==0) return 0;
for(int i=0;i<=S.stacksize-1;i++)
{//将原有栈中的元素拷贝到新栈中
newbase[i]=S.base[i];
}
delete S.base;//删除原有栈的空间
S.base=newbase;//原有栈的栈底指针指向新栈空间
S.top=&S.base[S.stacksize];//新栈栈顶元素的下一个位置
S.stacksize*=2;
}
*S.top=e;
S.top++;
return 1;
}
int GetTop(SqStack S)
{//返回栈顶元素
return *(S.top-1);
}
void pop(SqStack &S)
{//从栈S中删除元素
S.top--;
}
bool empty(SqStack S)
{//判断栈是否为空,若是返回true,否则返回false
if(S.base==S.top)
return true;
else return false;
}
void print(SqStack S)
{//打印栈中元素
int *p=S.base;
while(p<S.top)
{
cout<<*p<<" ";
p++;
}
cout<<endl;
}
void DestroyStack(SqStack &S)
{//释放栈所占的空间
delete S.base;
}
void NumTransfrom(int N,char str[])
{//将十进制整数N转化为十六进制数,存储到字符数组str中
int m;//存储商
int n;//存储余数
SqStack S;//定义一个栈变量
InitStack(S);
if(N==0)
{//N是0,十六进制就是0
str[0]='0';
str[1]='\0';
return;
}
while(N!=0)
{
m=N/16;//求商
n=N%16;//求余数
push(S,n);//余数入栈
N=m;
}
int index=0;
while(empty(S)==false)
{
int temp;
temp=GetTop(S);//整数出栈
pop(S);
if(temp>=0&&temp<=9)
str[index]='0'+temp;//整数插入到字符串尾部
else
str[index]='A'+temp-10;//将大于9的数字转化为相应的字母
index++;
}
str[index]='\0';
DestroyStack(S);//释放栈所占的空间
}
int main(int argc, char* argv[])
{
char str[100];
for(int i=0;i<=36;i++)
{
NumTransfrom(i,str);
cout<<"十进制整数"<<i<<"的十六进制整数表示为:"<<str<<endl;
}
return 0;
}
我们通常都是直接用数组来实现然后在将数组中的元素倒置即可,而由于栈就用后进先出的特点,因此本文用栈来实现转化。
阅读全文
1 0
- c++ j将十进制整数转化为十六进制整数 用栈来实现
- 将十进制整数转化为十六进制字符串形式
- 十六进制字符数组转化为十进制整数
- C语言将十进制整数输出为八进制和十六进制
- mips汇编语言之将十进制整数转换为十六进制输出
- 将整数转化为字符串【C语言版】
- 整数十进制转换为二进制和十六进制
- MySQL 将十六进制转化为十进制
- oc将十进制转化为十六进制
- 将十进制转化为十六进制和二进制
- 将十进制转化为二进制、八进制、十六进制
- 二进制转化为整数(十进制)
- 十进制整数转化为二进制详解
- 将字符串转化为整数
- 将整数转化为字符串
- 将罗马数字转化为整数
- 将二进制转换为整数,将十六进制转换为整数
- 通过编程实现将十进制整数转换为二进制
- CSS实现单行、多行文本溢出显示省略号
- Divide Two Integers:实现除法
- MapReduce之数据读取组件InputFormat原理解析
- 自定义View
- QT中对 mysql数据库的操作
- c++ j将十进制整数转化为十六进制整数 用栈来实现
- 搜
- CodeForces
- angular购物车查找删除
- cocos2d-x之写自己三国手游(二)
- 【Spring】 (3)注入方式读取各种配置
- unity战棋类游戏移动范围搜索算法设计(未优化)
- HTML之3D动画
- 购物车