| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 451 人关注过本帖
标题:为何在链栈里面传入指针到子函数里面却无法传出到主函数中啊,没理由啊,求 ...
只看楼主 加入收藏
abcdtianzi
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-5-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
为何在链栈里面传入指针到子函数里面却无法传出到主函数中啊,没理由啊,求解!!!
源程序:
#include<stdio.h>
#include<stdlib.h>
typedef struct snode
{
    int data;
    struct snode *next;
}stacknode;
int x;
void push_seqstack(int x,stacknode *top)/*入栈*/
{
    stacknode *p;
    p=(stacknode *)malloc(sizeof(stacknode));
    p->data=x;
    p->next=top;
    top=p;

}
stacknode *pop_seqstack(stacknode *top)  /*出栈*/
{
    stacknode *p;
    if(top->next==NULL)
    {
        printf("栈空\n");
        return NULL;
    }
    else
    {
        p=top;
        top=top->next;
        x=p->data;
        free(p);
        return top;
    }
}
void *init(stacknode *s)
{
    s=(stacknode*)malloc(sizeof(stacknode));
    s->next=NULL;
    return s;
}
void main()
{
    int i,n,y;
    stacknode *top;
    stacknode *s;   
    init(s);
    top=s;
    printf("输入栈个数:");
    scanf("%d",&n);
    printf("输入栈:\n");
    for(i=0;i<n;i++)
    {
        scanf("%d",&y);
        push_seqstack(y,top);
    }
    printf("出栈:\n");
    for(i=0;i<n;i++)
    {
        top=pop_seqstack(top);
        printf("%d ",x);
    }
    printf("\n");
}
如题,感谢各位高手的解答,小弟疑惑啊!
搜索更多相关主题的帖子: return 源程序 
2011-05-19 23:17
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:20 
程序代码:
#include<stdio.h>
#include<stdlib.h>

typedef struct snode
{
    int data;
    struct snode *next;
}stacknode;
int x;
stacknode * push_seqstack(int x,stacknode *top)/*入栈*/
{
    stacknode *p;
    p=(stacknode *)malloc(sizeof(stacknode));
    p->data=x;
    p->next=top;

    return top=p;
}

stacknode *pop_seqstack(stacknode *top)  /*出栈*/
{
    stacknode *p;
    if(top->next==NULL)
    {
        printf("栈空\n");
        return NULL;
    }
    else
    {
        p=top;
        top=top->next;
        x=p->data;
        free(p);
        return top;
    }
}

stacknode *init(stacknode *s)
{
    s=(stacknode*)malloc(sizeof(stacknode));
    s->next=NULL;
    return s;
}

void main()
{
    int i,n,y;
    stacknode *top;
    stacknode *s = NULL;
   
    s = init(s);

    top=s;
    printf("输入栈个数:");
    scanf("%d",&n);
    printf("输入栈:\n");
    for(i=0;i<n;i++)
    {
        scanf("%d",&y);
        top = push_seqstack(y,top);
    }
    printf("出栈:\n");
    for(i=0;i<n;i++)
    {
        top=pop_seqstack(top);
        printf("%d ",x);
    }
    printf("\n");
}
2011-05-20 00:13
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
要知道什么情况下应该返回指针什么情况下不用

给个链接:https://bbs.bccn.net/viewthread.php?tid=337427&page=1#pid1950904
2011-05-20 00:16
abcdtianzi
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-5-12
收藏
得分:0 
回复 3楼 寒风中的细雨
链接哪里有说,看不到?具体解释一下,谢谢
2011-05-20 13:05
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
8 楼 和 9 楼
2011-05-20 13:08
abcdtianzi
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-5-12
收藏
得分:0 
回复 5楼 寒风中的细雨
“当你使用的是头指针(head = NULL) 那么第一次用的时候 就要当心这里 head->next; 如果没有指向一个结点的时候这句是不能用的”
 你所说的"不能用"是在哪方面,是说不能返回主函数吗?
2011-05-20 19:38
快速回复:为何在链栈里面传入指针到子函数里面却无法传出到主函数中啊,没理由啊 ...
数据加载中...
 
   



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

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