鱼C论坛

 找回密码
 立即注册
查看: 1549|回复: 4

[已解决]关于c语言单链表实现(尾插法)

[复制链接]
发表于 2018-11-28 21:32:01 | 显示全部楼层 |阅读模式
50鱼币
typedef struct Node{
    int data;
    struct Node *next;
    int length;
}Node,*List;

List creat(List L,int n)
{
    L=(List) malloc(sizeof(Node));
    List last = (List)malloc(sizeof(Node));
    L->next=NULL;
    L->length = 0;
    last = L;
    while(n--)
    {
        List p=(List) malloc(sizeof(Node));
        scanf("%d",&p->data);
        p->next = NULL;
        last->next = p;
        last = last->next;
        L->length++;
    }
    last->next=NULL;
    return L;
}

如上面程序所示,是创造一个单链表,采用尾插法,但是,不明白,为什么把L节点赋值给last节点,但最后返回L节点是头结点,而且L->next不是NULL了?这是为什么,不是对last进行赋值操作,L与last是怎么关联上的?last = L不是指把L赋值给last吗,那L与last之间是什么关系呢?完全搞不懂???
最佳答案
2018-11-28 21:32:02
这样跟你说吧,把L当作一张卡片,上面写着你家的地址,然后你拿另一张卡片last,也写上你家的地址,然后你让装修工人拿着last这张卡片按上面地址去给这个房子换门,门换好后,L和last卡片上的地址还是那个地址,但是这个地址上的房子的门已经被换掉了

最佳答案

查看完整内容

这样跟你说吧,把L当作一张卡片,上面写着你家的地址,然后你拿另一张卡片last,也写上你家的地址,然后你让装修工人拿着last这张卡片按上面地址去给这个房子换门,门换好后,L和last卡片上的地址还是那个地址,但是这个地址上的房子的门已经被换掉了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-28 21:32:02 | 显示全部楼层    本楼为最佳答案   
这样跟你说吧,把L当作一张卡片,上面写着你家的地址,然后你拿另一张卡片last,也写上你家的地址,然后你让装修工人拿着last这张卡片按上面地址去给这个房子换门,门换好后,L和last卡片上的地址还是那个地址,但是这个地址上的房子的门已经被换掉了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-28 21:49:22 | 显示全部楼层
本帖最后由 rencaixiaomeng 于 2018-11-28 21:52 编辑

第一次循环的时候,last和L都指向同一个节点,在循环里新建一个p结点,并让last->next指向这个p,这个时候,因为last和L都指向同一个节点,所以last->next和L->next是一样的,修改了last->next就等同于修改了L->next
L一直保存着第一个节点的地址,也就是循环开始前创建的那个节点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-11-28 22:48:15 | 显示全部楼层
rencaixiaomeng 发表于 2018-11-28 21:49
第一次循环的时候,last和L都指向同一个节点,在循环里新建一个p结点,并让last->next指向这个p,这个时候 ...

为什么last->next和L->next是一样的?然后修改last->next就等同于修改了L->next?明明last和L没有建立联系啊,只有一个单方向的last = L,不是吗?这一步我还是转不过来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-11-29 08:48:23 | 显示全部楼层
rencaixiaomeng 发表于 2018-11-28 23:18
这样跟你说吧,把L当作一张卡片,上面写着你家的地址,然后你拿另一张卡片last,也写上你家的地址,然后你 ...

哦!!!懂了,就是说最后返回的L指向的还是原来的地址,但原来的地址后面的东西已经改变了,这个比喻很恰当,谢谢!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 00:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表