永发信息网

关于数据结构的进制转换问题

答案:2  悬赏:20  手机版
解决时间 2021-04-16 14:26


#include "stdafx.h"
#include "iostream"
#include "string"
using namespace std;

typedef struct SNode //定义结点
{
struct SNode *next;
int data;
}SNode,*SqStack;
SqStack *top;

void initStack(SqStack *L) //创建链表
{
L=(SqStack*)malloc(sizeof(SqStack));
(*L)->next=NULL;
}

int Empty(SqStack L) //判断链表是否为空
{
return(L->next==NULL?1:0);
}

void Push(SqStack L,int x)//入栈
{
SNode *p,*q;
p=L;
q=new SNode();
q->data=x;
q->next=p->next;
p->next=q;
}

void Pop(SqStack L,int x)//出栈
{
SNode *p,*q;
p=L;
if(Empty(L))
cout<<"栈为空"<<endl;
else
{
q=p->next;
x=q->data;
p->next=q->next;
free(q);
}
}

void GetTop(SqStack L,int x)//取栈顶元素
{
if(Empty(L))
cout<<"栈为空"<<endl;
x=L->next->data;
}

void conversion(int x)//十进制转换到二、八或十六进制
{
int i,y;
cout<<"请输入转换后的数制(2,8,16):";
cin>>i;
SqStack *L;
L=new SqStack();

while(!x)
{
Push(*L,x%i);
x=x/i;
}
while(!Empty(*L))
{
Pop(*L,y);
cout<<y;
}
}


int _tmain(int argc, _TCHAR* argv[])
{
int x;
cin>>x;
conversion(x);

return 0;
}

运行会后异常中断

最佳答案

我给你个吧 用标准c++写的 !


#include<iostream>
#include<stack>
#include<cstdlib>
#include<string>
using namespace std;
void convert(int num ,int n)//把num数转换为n进制
{
stack<char> s;
char temp;
string Binary;
while(num/n)
{
temp=num%n+'0';
s.push(temp);
num=num/n;
if(num<n)
s.push(num+'0');
}


while(!s.empty())
{
if(n==16)
{
switch(s.top())
{
case ':':Binary+="A";break;
case ';':Binary+="B";break;
case '<':Binary+="C";break;
case '=':Binary+="D";break;
case '>':Binary+="E";break;
case '?':Binary+="F";break;
default:Binary+=s.top();
}
// Binary=s.top();
s.pop();
}
else
{
Binary+=s.top();
s.pop();
}

}
cout<<Binary<<endl;


}
int main()
{
string str;
int n,num;
cout<<"请你输入输入你想转换的十进制数和你想转换为哪个进制的数"<<endl;
cin>>str>>n;
if(str[0]=='-')
{
str.erase(0,1);
num=atoi(str.c_str());
cout<<"-";
convert(num,n);
}
else
{
num=atoi(str.c_str());
convert(num,n);
}
return 0;
}
多多看吧 采用了 栈的思想!我用的是 c++ STL写的!

全部回答
很多地方都不对,基本上完全错误。根源在于没理解c语言。 象typedef struct{...} * SqStack及后面的new SqStack这类的行为都是完全错误的行为
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
仙三问情如何免CD(不装虚拟光驱的)
12万左右买什么车?
初二读书笔记家长寄语,家长寄语怎么写初中
买了游戏光盘,怎么刻录保存到电脑!
为什么把好友删除了,他还能到农场偷菜?
小箐镇这个地址在什么地方,我要处理点事
忧者见之则忧,喜者见之则喜说明了什么道理
天宇锁业地址好找么,我有些事要过去,
黄村三联路地址有知道的么?有点事想过去
与NOKIA5700机型一样的手机是什么型号的?
dnf深渊好耍吗
梦幻西游如何打造69JP比武DT!
向大地头球全剧更新完了吗?
河北省保定市双兴有限公司
大榆树村在哪里啊,我有事要去这个地方
推荐资讯
采起什么措施?能让我睡好觉,眼锶好多我失眠
QQ魔域第十区.神域之乱..;人多不多..最高几站
我想知道地球为什么叫地
兴文印刷厂喜博办公文具怎么去啊,有知道地址
贵丽南三街/贵丽北三街(路口)在什么地方啊,
QQ老板键怎么设置啊
财务通申请证书手机发送失败怎么办?
怎样保服视力
哪里可以下载森田疗法的书籍?
超级好听滴歌
石板口我想知道这个在什么地方
博大石油怎么去啊,有知道地址的么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?