回 帖 发 新 帖 刷新版面

主题:堆栈要将一个十进制转换成八进制的算法,不知道错在哪?大家帮帮忙

#include<stdio.h>
#include<stdlib.h>
#define NULL 0
#define stackinitsize 100
#define stackincrement 10
typedef struct{
    int *base,*top;
    int stacksize;
}stack;

int initstack(stack &s){
    s.base=(int*)malloc(stackinitsize*sizeof(int));
    if(!s.base) return NULL;
    s.top=s.base;   //
      return NULL;
}

int pushstack(stack &s,int e){
    if(s.top-s.base>=s.stacksize)
        s.base=(int*)realloc(s.base,(s.stacksize+stackincrement)*sizeof(int));
    if(!s.base) return NULL;
    s.top=s.base+s.stacksize;
    s.stacksize+=stackincrement;
    
    *s.top++=e;
    
    return NULL;
}
int popstack(stack &s,int &e){
    if(s.top==s.base) return NULL;
    e=*--s.top;
    return NULL;
}

void main()
{
    int N,e;
    stack s;
    initstack(s);
    printf("\n输入一个十进制转换八进制:");
    
    scanf("%d",&N);
    while(N){
        pushstack(s,N%8);
        N=N/8;
    }
    printf("go on!\n");
    while(s.base!=s.top){
        popstack(s,e);
        printf("%d",e);
    }
    

}
输入一个数,就再也没有反应,不知道怎么回事..用中断试了之后那*s.top老给不了值..奇怪..大家帮帮忙,在此感谢大家了

回复列表 (共2个回复)

沙发


请大家帮忙看看,谢谢各位啦![em2]

板凳


还有就是这个程序一运行,电脑就突然变得有点慢..好奇怪!

我来回复

您尚未登录,请登录后再回复。点此登录或注册