回 帖 发 新 帖 刷新版面

主题:[讨论]栈??

各位高手,帮忙更正一下,谢谢

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>

#define ERROR 0
#define OK 1
#define STACKINTTSIZE 100
#define STACKINCREMENT 10

typedef int ElemType;
typedef int Status;

typedef struct
{
    ElemType *base;
    ElemType *top;
    int stacksize;
}SqStack;


Status StackEmpty(SqStack S)
{
    if(S.top==S.base)
    return OK;
    else exit(ERROR);


Status InitStack(SqStack *S)
{

    S->base=(ElemType *)malloc(STACKINTTSIZE *sizeof(ElemType));
    if(!S->base) exit(ERROR);
    S->top=S->base;
    S->stacksize=STACKINTTSIZE;
    return OK;
}

Status Push(SqStack *S,ElemType e)
{
    if(S->top-S->base>=S->stacksize)
    {
        S->base=(ElemType *)realloc(S->base,(S->stacksize+STACKINTTSIZE) *sizeof(ElemType));
        if(!S->base) exit(ERROR);
        S->top=S->base+S->stacksize;
        S->stacksize+=STACKINTTSIZE;
    }
    *S->top++=e;
    return OK;
}

Status Pop(SqStack *S,ElemType *e)
{
    if(S->top==S->base) return ERROR;
    *e=*--S->top;
    return OK;
}


void conversion()
{
    int N;
    Stack S;
    IniStack(&S);
    scanf("%d",N);
    while(N)
    {
        Push(&S,N%8);
        N=N/8;
    }
    while(!StackEmpty(S))
    {
        Pop(&S,N);
        printf("%d",e);
    }
}

回复列表 (共3个回复)

沙发

没有任何注释,也不说明有什么问题,就扔一堆代码放那,让别人给你更正。你这不是浪费别人的时间么?

板凳

void conversion()
{
    int N;
    Stack S;// 改为: SqStack S;
    IniStack(&S);
    scanf("%d",N);
    while(N)
    {
        Push(&S,N%8);
        N=N/8;
    }
    while(!StackEmpty(S))
    {
        Pop(&S,N);//改为:Pop(&S,e);
        printf("%d",e);
    }
}

3 楼

两天过去了

我来回复

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