| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 914 人关注过本帖
标题:还是c语言中空间的申请问题,线性链表
只看楼主 加入收藏
关鱼
Rank: 1
等 级:新手上路
帖 子:23
专家分:9
注 册:2011-9-13
结帖率:66.67%
收藏
已结贴  问题点数:15 回复次数:3 
还是c语言中空间的申请问题,线性链表
程序代码:
[code]
#include <stdio.h>
#include <malloc.h>
typedef   int    DATATYPE  ;
#define MAC (linklist )malloc(sizeof(Lnode))

typedef struct node
{
    DATATYPE data;
    struct Lnode *next;           
}   Lnode,*linklist;

linklist Creat()
{
    int i_count=0;
    int i_temp;
    linklist p_head,p_st1,p_st2;
    p_head=MAC;                    //MAC为预定义开辟空间
    p_head->next=NULL;
    p_st1=p_head;
                 
    printf("请输入数据,以-1结束\n");
    scanf("%d",&i_temp);
    while (i_temp!=-1)
    {
        if (p_head->next==NULL)
            p_head->next=p_st1;
    

            p_st2=MAC;            //为什么p_st2要开辟空间而p_st1可以不开辟空间赋值?
            p_st2->data=i_temp;
            p_st1->next=p_st2;    //这为什么可不开辟而直接存?疑问
            p_st1=p_st2;
            i_count++;            //数组数字个数统计。。尾插法建立链表
            scanf("%d",&i_temp);
   
    }
    p_head->data=i_count;
    p_st1->next=NULL;
    return p_head;

就是对那个p_st1那的疑问,空间为什么不开辟就可以用,而p_st2却必须先开辟后使用?达人呢
[/code]
搜索更多相关主题的帖子: c语言 空间 
2011-09-21 20:08
czsbc
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:469
专家分:1700
注 册:2008-12-13
收藏
得分:5 
LZ好像没有把指针弄清楚吧

只有一个数据要存放,分配两块内存干嘛。指针也是变量。
2011-09-21 20:49
exo1991
Rank: 2
等 级:论坛游民
帖 子:66
专家分:98
注 册:2011-8-30
收藏
得分:10 
因为p_st1在creat函数的前部分已经开辟了一段空间还没有用,所以就不用再开辟了。
至于p_st2是在while循环中的,又因为你要不断的输入数据,因此是要不断的开辟空间的。
2011-09-21 22:15
关鱼
Rank: 1
等 级:新手上路
帖 子:23
专家分:9
注 册:2011-9-13
收藏
得分:0 
嗯,了解
2011-09-23 13:09
快速回复:还是c语言中空间的申请问题,线性链表
数据加载中...
 
   



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

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