标题:为什么在C++运行出来,将&去掉在C中却运行不出来
取消只看楼主
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
结帖率:100%
已结贴  问题点数:20 回复次数:10 
为什么在C++运行出来,将&去掉在C中却运行不出来
#include<stdio.h>
#include<stdlib.h>

typedef struct zhan{
    int data;
    struct zhan *next;
}zhan,*ZhanL;

/**
 * 初始化栈
 * */
ZhanL initZhan(){
    ZhanL L =(ZhanL)malloc(sizeof(zhan));
    L->next=NULL;
    return L;
}

/**
 * 进栈操作
 * */
int push(ZhanL &L,int data){
    //创建一个新的结点
    ZhanL p=(ZhanL)malloc(sizeof(zhan));
    p->data=data;
    p->next = L;
    L = p;
    return 0;
}
int pop(ZhanL &L){
    if(L->next){
        ZhanL s=L;//释放空间用
        printf("%d ",s->data);
        L = L->next;
        if(L->next){// printf("栈顶%d \n",L->data);
        } else{
            printf("栈空\n");
        }
        free(s);
    }
    return 0;
}



/**
 * 转换方法
 * */
 int zhuanhuan(ZhanL &L,int data,int jz){
     while (data){
         push(L,data%jz);
         data = data/jz;
     }

     while (L){
         pop(L);
     }
    return 0;
 }


 int main(){
    ZhanL L;
    L=initZhan();
    printf("请输入一个十进制数");
    int data,jz;
    scanf("%d",&data);
    printf("请输入转换的进制");
    scanf("%d",&jz);
    zhuanhuan(L,data,jz);
    return 0;
}
搜索更多相关主题的帖子: 运行 return int data next 
2020-03-24 20:14
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
得分:0 
大佬求解
2020-03-24 20:19
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
得分:0 
回复 3楼 return_0什么意思,只是想把它改成C语言,总是运行不出来

#include<stdio.h>
#include<stdlib.h>

typedef struct zhan{
    int data;
    struct zhan *next;
}zhan,*ZhanL;

/**
 * 初始化栈
 * */
ZhanL initZhan()
{
    ZhanL L =(ZhanL)malloc(sizeof(zhan));
    L->next=NULL;
    return L;
}

/**
 * 进栈操作
 * */
int push(ZhanL L,int data)
{
    //创建一个新的结点
    ZhanL p=(ZhanL)malloc(sizeof(zhan));
    p->data=data;
    p->next = L;
    L = p;
    return 0;
}
int pop(ZhanL L)
{
    if(L->next){
        ZhanL s=L;//释放空间用
        printf("%d ",s->data);
        L = L->next;
        if(L->next)
        {
        //    printf("%d \n",L->data);
        }
        else
        {
            printf("栈空\n");
        }
        free(s);
    }
    return 0;
}
/**
 * 转换方法
 * */
 int zhuanhuan(ZhanL L,int data,int jz)
 {
     while (data)
     {
         push(L,data%jz);
         data = data/jz;
     }
     while (L)
     {
         pop(L);
     }
    return 0;
 }
 int main()
 {
    ZhanL L;
    int data,jz;
    L=initZhan();//初始化
    printf("请输入一个十进制数\n");  
    scanf("%d",&data);
    printf("请输入转换的进制\n");
    scanf("%d",&jz);
    zhuanhuan(L,data,jz);
    return 0;
}
2020-03-24 20:28
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
得分:0 
回复 6楼 return_0编译没显示错误
我试过了,只是在这一段代码时有问题,不知是函数调用的方式不对,还是有其他的错误呢?
{
            printf("栈空\n");
}
2020-03-24 20:50
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
得分:0 

while (L)
     {
         pop(L);
     }
这一段有问题,不是是什么问题
2020-03-24 20:53
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
得分:0 
回复 10楼 return_0
按理来说应该会出现
2 5 0 4 空栈
但是不知为什么也不出
2020-03-24 20:59
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
得分:0 
回复 13楼 wmf2014
如果是C的话,一定要定义指针传值吗?
是主函数与其他函数之间,还是任意调用函数都要定义指针?
2020-03-24 21:02
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
得分:0 
回复 18楼 wmf2014
是主函数用*定义,还是调用的函数中用指针定义?
那这个代码该怎么调试呢?
2020-03-24 21:10
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
得分:0 
回复 21楼 wmf2014
奥奥,可以了,刚试了一下,非常感谢
2020-03-24 21:44
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
得分:0 
回复 22楼 wmf2014
你这个代码的话,那就说明他不是一个栈了吧,这不就是进行了尾插法吗?
搞不懂
2020-03-25 21:23



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




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

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