| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 287 人关注过本帖
标题:关于链式存储用C语言实现的疑问
只看楼主 加入收藏
fishxiaoyun
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-9-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
关于链式存储用C语言实现的疑问
c语言学了一点皮毛,在看数据结构的时候,老师讲的链式存储
用c来实现可以用以下代码。
不明白结构体内的那个指针是什么意思,如何实现指向下一个节点的地址。
谢谢。
typedef struct LNode
{
        int data;
        struct LNode *next;//这个指针指向的是哪?什么意思?
}LNode;
        LNode *L;
        L=(LNode*)malloc(sizeof(LNode));//这里的(LNode*)是什么意思?
        A->next=B;
        B->next=C;
搜索更多相关主题的帖子: C语言 链式 next 存储 疑问 
2020-09-13 12:55
纯蓝之刃
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:34
帖 子:458
专家分:2935
注 册:2019-7-29
收藏
得分:20 
struct LNode *next; 是指向下一个结构的首地址,这样就可以通过next->data访问下一个节点的数据了,而next->next->data就是访问下下节点的数据,以此类推形成一条链的访问形式。
L=(LNode*)malloc(sizeof(LNode));malloc()会返回一块空间的首地址,而(LNode*)就是将指针的访问类型转换成LNode类型,L+1访问的是sizeof(LNode)长度之后的地址,这样就将这块空间分成了LNode结构大小的一块一块的去访问了。

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2020-09-13 19:58
八画小子
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:30
帖 子:675
专家分:1869
注 册:2010-11-11
收藏
得分:0 
可以先画个示意图看看。图中的箭头其实就是C代码中的指针。
2020-09-13 22:15
fishxiaoyun
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-9-2
收藏
得分:0 
结构体内定义的指针struct LNode *next; 不是指向了LNode结构体本身么?
还是说*next是固定的一个格式,就是表示指向下一个节点?
*next可以换成*p或者*a什么的其他指针变量么?
L=(LNode*)malloc(sizeof(LNode));这句有点看懂了。
是不是把malloc分配的空间强制转换成LNode的类型。
2020-09-14 05:52
fishxiaoyun
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-9-2
收藏
得分:0 

是不是通过struct LNode实例化几个变量A,B,C
再用
        A->next=B;
        B->next=C;
来实现A的指针分量指向B,B的指针分量指向C这种链式存储结构
2020-09-14 09:30
纯蓝之刃
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:34
帖 子:458
专家分:2935
注 册:2019-7-29
收藏
得分:0 
struct LNode *next只是一个指针,指向一块空间的首地址,这块空间是使用malloc申请的LNode结构大小的空间。*next只是指针名字,换成任意的就可以。
LNode L0,*L1,*L2,*L3;                        //假设L0为链表头
        L1=(LNode*)malloc(sizeof(LNode));        //L1为申请的LNode大小空间的首地址
        L0.next=L1;                                //这样L0内的next就指向了L1申请的空间,通过L0.next就可以访问L1节点内的内容了。
        L2=(LNode*)malloc(sizeof(LNode));        //L1为申请的LNode大小空间的首地址
        L1->next=L2;                                //这样L1内的next就指向了L2申请的空间,通过L1->next就可以访问L2节点内的内容了,在这里L1->next也可以使用L0.next->next。这样以此列推就可以通过L0的一级一级往下链接访问这个数据结构了。

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2020-09-14 09:34
lin5161678
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:32
帖 子:1065
专家分:3305
注 册:2011-12-3
收藏
得分:0 
回复 5楼 fishxiaoyun
是的 这样做就是链表了

https://zh.
2020-09-14 09:40
fishxiaoyun
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2020-9-2
收藏
得分:0 
回复 6楼 纯蓝之刃
谢谢版主,讲的很详细了
这次我明白了,其实就是指针的灵活运用。
学到了几个知识点,非常感谢。
2020-09-15 05:14
快速回复:关于链式存储用C语言实现的疑问
数据加载中...
 
   



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

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