打印
[牛人杂谈]

链表的最简单演示

[复制链接]
423|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
什么是链表,可能很多人都略微知道

这就是最简单的链表,再复杂的也是在这种基础上叠加出来的


使用特权

评论回复
沙发
mintspring|  楼主 | 2020-10-17 15:12 | 只看该作者
void test6(void)
{
        struct node
                {
                        int x;
                        struct node *p;
                };
        struct node link1,link2,link3;
        link1.x=1;
        link2.x=4;
        link3.x=3;
        link1.p=&link2;
        link2.p=&link3;
        link3.p=&link1;

        printf("link1.p=        %p\n",link1.p);
        printf("&link2=                %p\n",&link2);       
        printf("*link1.p=        %d\n",link1.p->x);
       
}
结合上一个例子,我解释一下这个。
struct node
{
int x;
struct node *p;
};
定义结构体node,表示链表的一个节点,该节点应能存储节点的数据+下一个节点的地址。
因此该节点的结构体变量包含两项数据,其中第二个存储地址的数据位指针,且能指向自身结构类型地址的指针,
然后就是创建节点,跟使用结构体变量类型方法是一样的,创建3个节点,
然后通过取地址将3个节点地址取出,放到编号挨着的三个变量的地址存储位置。
这样我们就将三个节点链接组合成了一个三角形的环状。。
我们就可以通过节点1里面存储的地址,去找到节点2里面的数据,然后再通过节点2的地址找到节点3里的数据。

使用特权

评论回复
板凳
mintspring|  楼主 | 2020-10-17 15:14 | 只看该作者
本帖最后由 mintspring 于 2020-10-17 15:18 编辑

其实链表是为了开辟不连续的空间,所以创建节点可以通过内存申请函数。然后通过一个读取点(可以是临时的同类型元素变量)不停的按图索骥读取下一个节点,直到满足某个条件,比如指针指向了NULL。

这里不再讲。

使用特权

评论回复
地板
jiekou001| | 2020-10-17 15:43 | 只看该作者
多谢分享。

使用特权

评论回复
5
xinpian101| | 2020-10-17 18:02 | 只看该作者
通俗易懂。

使用特权

评论回复
6
gaoyang9992006| | 2020-10-18 19:13 | 只看该作者
讲的好,收藏了。

使用特权

评论回复
7
mintspring|  楼主 | 2020-10-25 23:57 | 只看该作者
嘿嘿,准备深入研究

使用特权

评论回复
8
guguo8266| | 2020-10-26 13:04 | 只看该作者
多谢分享。

使用特权

评论回复
9
木木guainv| | 2020-11-10 13:12 | 只看该作者
单片机编程很少用链表啊

使用特权

评论回复
10
aoyi| | 2020-11-10 13:14 | 只看该作者
只是有一个大框的概念

使用特权

评论回复
11
drer| | 2020-11-10 13:15 | 只看该作者
我一般都是用在上位机上

使用特权

评论回复
12
gwsan| | 2020-11-10 13:15 | 只看该作者
操作不好容易出问题

使用特权

评论回复
13
kxsi| | 2020-11-10 13:15 | 只看该作者
指针操作需要谨慎

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

282

主题

4810

帖子

24

粉丝