今天写什么 2023-04-23 18:34 采纳率: 58.8%
浏览 9

关于#算法#的问题,如何解决?(语言-c++)

这个顺序栈进制转换实现不成功的原因是什么呀求指点(图一是参考的算法,图二是参考图一写的

img

img

#include<iostream>
#include<malloc.h>
#include <string>
using namespace std;
#define MaxSize 100
typedef int ElemType;

typedef struct {
    ElemType data[MaxSize];
    int top;
} SqStack;

void InitStack(SqStack * &s);
bool StackEmpty(SqStack * s) ;
bool Push(SqStack * &s,ElemType e);
int StackLength(SqStack * s);
void DisplayStack(SqStack *s);
bool GetTop(SqStack*s,ElemType &e);
bool Pop(SqStack * &s,ElemType &e);
void DestroyStack(SqStack * &s);
string dec2base(int num,int base);

int main() {
    int num,base,numStr;
    cout<<"输入十进制数:";
    cin>>num;
    cout<<"要将其转换为几进制:";
    cin>>base;
    cout<<"转换后为:";
    dec2base(num,base);
    return 0;
}

void InitStack(SqStack * &s) {
    s = (SqStack*) malloc(sizeof(SqStack));
    s->top=-1;
}

bool StackEmpty(SqStack * s) {
    return (s->top==-1);
}

bool Push(SqStack * &s,ElemType e) {
    if(s->top==MaxSize-1)
        return false;
    s->top++;
    s->data[s->top]=e;
    return true;
}

int StackLength(SqStack * s) {
    return(s->top+1);
}

void DisplayStack(SqStack *s) {
    for(int i=s->top; i>=0; i--) {
        cout<<s->data[i]<<" ";
    }
    cout<<endl;
}

bool GetTop(SqStack*s,ElemType &e) {
    if(s->top==-1)
        return false;
    e=s->data[s->top];
    return true;
}

bool Pop(SqStack * &s,ElemType &e) {
    if(s->top== -1)
        return false;
    e=s->data[s->top];
    s->top--;
    return true;
}

void DestroyStack(SqStack * &s) {
    free(s);
}

string dec2base(int num,int base) {
    string digitChar = "0123456789ABCDEF";
    string numStr = "";
    SqStack * s;//
    InitStack(s);//
    ElemType e;//
    do {
        Push(s, digitChar[num%base]);   //将余数入栈
        num/=base;
    } while(num != 0);

    char temp;
    while(!StackEmpty(s)) {
        temp = s->top;   //取栈顶
        Pop(s,e);         //出栈
        printf("%d",e);
        numStr += temp;  //将余数出栈并附到numStr字符串中
    }
    return numStr;
}

  • 写回答

2条回答 默认 最新

  • 老黑程序说 2023-04-23 20:18
    关注

    emm,最好还是把代码也贴出来,这样子即使看不出来是什么问题,也可能有人会拿代码去运行,帮你debug 出来

    评论

报告相同问题?

问题事件

  • 修改了问题 4月27日
  • 创建了问题 4月23日

悬赏问题

  • ¥15 找别人艾特你然后删除的微博
  • ¥15 idea做图书管理系统,要求如下
  • ¥15 最短路径分配法——多路径分配
  • ¥15 SQL server 2022安装程序(英语)无法卸载
  • ¥15 关于#c++#的问题:把一个三位数的素数写在另一个三位数素数的后面
  • ¥15 求一个nao机器人跳舞的程序
  • ¥15 anaconda下载后spyder内无法正常运行
  • ¥20 统计PDF文件指定词语的出现的页码
  • ¥50 分析一个亿级消息接收处理策略的问题?
  • ¥20 uniapp 朋友圈分享单页面自定义操作