标题:关于栈不能输出结果和其中变量的定义问题
只看楼主
feitianshu
Rank: 2
等 级:论坛游民
帖 子:14
专家分:31
注 册:2016-10-18
结帖率:100%
已结贴  问题点数:20 回复次数:1 
关于栈不能输出结果和其中变量的定义问题
//以下程序有两个问题请教
//1、 elemtype e;sqstack S;如果我把这两个变量作为全部变量编译能通过,但是如果放在main函数或者conversion函数里定义,就会提示没有初始化,求解
//2、程序问题出在哪里,怎么没有输出结果,求大神指教
程序代码:
#include <stdio.h>
#include <stdlib.h>
#define init_size 100
#define add_size 10
#define ERROR 0
#define OK 0
typedef int status;
typedef int elemtype;
typedef struct sqstack
{
    elemtype *base;
    elemtype *top;
    int stack_size;//当前长度
}sqstack;
    elemtype e; 
    sqstack S;
status init_stack(struct sqstack s)
{
    s.base=(elemtype *)malloc(add_size*sizeof(elemtype));
    if(!s.base)
        exit(ERROR);
        s.top =s.base ;
        s.stack_size =init_size;
        return OK;
}
status Push(sqstack s,elemtype e)
{
    if(s.top -s.base >=s.stack_size )
    {
    s.base =(elemtype *)realloc(s.base ,(s.stack_size +add_size)*sizeof(elemtype));
    if(!s.base )
        exit(ERROR);
    s.top =s.base +s.stack_size ;
    s.stack_size =s.stack_size +add_size;
    }
    *s.top ++=e;
    return OK;
}
status Pop(sqstack s,elemtype e)
{
    if(s.top ==s.base )
        return(ERROR);
    else
    e=*--s.top;
    return OK;
}
void conversion (int Num) 
{  // 算法3.1
    // 对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数


    init_stack(S);      // 构造空栈
    while (Num) {
        Push(S, Num % 8);//
        Num = Num/8;
    }
    while (!(S.top==S.base)) {
        Pop(S,e);
        printf ("%d", e);
    }
    printf("\n");
} // conversion
int main()
{
    int Num;
    printf("请输入需要一个转换为8进制的10进制数:");
    scanf("%d",&Num);
    conversion (Num); 
    return 0;
}
搜索更多相关主题的帖子: conversion color 
2016-11-09 08:18
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
得分:20 
既然用了全局变量,就不要使用形参来传值了
程序代码:
#include <stdio.h>
#include <stdlib.h>
#define init_size 100
#define add_size 10
#define ERROR 0
#define OK 0
typedef int status;
typedef int elemtype;
typedef struct sqstack
{
    elemtype *base;
    elemtype *top;
    int stack_size;//当前长度
}sqstack;
elemtype e;
sqstack S;
status init_stack()
{
    S.base = (elemtype *)malloc(add_size*sizeof(elemtype));
    if (!S.base)
        exit(ERROR);
    S.top = S.base;
    S.stack_size = init_size;
    return OK;
}
status Push(elemtype f)
{
    if (S.top - S.base >= S.stack_size)
    {
        S.base = (elemtype *)realloc(S.base, (S.stack_size + add_size)*sizeof(elemtype));
        if (!S.base)
            exit(ERROR);
        S.top = S.base + S.stack_size;
        S.stack_size = S.stack_size + add_size;
    }
    *S.top++ = f;
    return OK;
}
status Pop()
{
    if (S.top == S.base)
        return(ERROR);
    else
        e = *--S.top;
    return OK;
}
void conversion(int Num)
{  // 算法3.1
   // 对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数


    init_stack();      // 构造空栈
    while (Num) {
        Push(Num % 8);//
        Num = Num / 8;
    }
    while (!(S.top == S.base)) {
        Pop();
        printf("%d", e);
    }
    printf("\n");
} // conversion
int main()
{
    int Num;
    printf("请输入需要一个转换为8进制的10进制数:");
    scanf("%d", &Num);
    conversion(Num);
    return 0;
}
2016-11-10 11:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-470931-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.185280 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved