| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 763 人关注过本帖
标题:数据结构问题
取消只看楼主 加入收藏
z6439186
Rank: 1
等 级:新手上路
帖 子:16
专家分:2
注 册:2011-11-15
结帖率:33.33%
收藏
已结贴  问题点数:10 回复次数:2 
数据结构问题
#include<stdio.h>
#include<stdlib.h>
typedef struct stack
{
    int data;
    struct stack *next;
}linkstack,*linklist;
linklist stack=NULL;
void push(int i)
{
    int j;
    linklist q;
    for(j=0;j<i;j++)
    {
        q=(linklist)malloc(sizeof(linkstack));
        q->next=NULL;
        scanf("%d",&q->data);
        q->next=stack;
        stack=q;
    }
}
void pop()
{
    linklist p;
   while(stack!=NULL)
   {
       p=stack;
       printf("%d",p->data);
       free(p);//为什么加了这个以后就只能输出一个了呢
       stack=stack->next;
   }

}
void main()
{
    int x;
    scanf("%d",&x);
    push(x);
     pop();
}
希望告诉我下,详细点,为什么不能释放啊
void main()
{
    int x;
    linklist p,q;
    scanf("%d",&x);
p=push(stack1,x);
q=push(stack2,x);//把push函数变为void push(stack),没有return stack,直接用push(stack1,x);push(stack2,x);pop(stack1);pop(stack2)不行呢,输不出结果,难道stack的值没有变化吗,同时linklist stack=NULL; 在程序里是什么,是不是全局变量啊

     pop(p);
      pop(q);
}
搜索更多相关主题的帖子: next void include 
2012-05-10 11:15
z6439186
Rank: 1
等 级:新手上路
帖 子:16
专家分:2
注 册:2011-11-15
收藏
得分:0 
知道了,但我想问下为什么p=push(stack1,x);
q=push(stack2,x);//把push函数变为void push(stack),没有return stack,直接用push(stack1,x);push(stack2,x);pop(stack1);pop(stack2)不行呢,输不出结果,难道stack的值没有变化吗,同时linklist stack=NULL; 在程序里是什么,是不是全局变量啊
到底是什么原因啊

2012-05-10 13:11
z6439186
Rank: 1
等 级:新手上路
帖 子:16
专家分:2
注 册:2011-11-15
收藏
得分:0 
上面楼的错了啊,你p和q输出来的结果不一样啊,既然你free(p)了,就相当于把它所指向的内存释放了啊,那他就属于脏数据;也就是说,这部分数据可能存在并且维持原来的值,也可能被清空,或者被修改为其他值;就不能再引用它了,以前所指向他的指针也不能再用了,再用的话就是非法的了
2012-05-11 17:58
快速回复:数据结构问题
数据加载中...
 
   



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

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