添加新节点到链表中间(C语言链表问题)

添加新节点到链表中间(C语言链表问题),第1张

1.LINK是结构PERSON的指针类型,比如:

typedef PERSON * LINK

当使用LINK时,可以举例如下:

LINK p

PERSON per

p = &per

2.第4行可能是笔误吧,应该是:

new->next = marker->next

这里无法贴图,只好写些文字来叙述了。

比如,链表是这样的:

假设link1的next是link2,link2的next是link3,以此类推,linkm的next是linkn,linkn的next是linko等等,又假设marker等于linkn,新创建的结构是new,需要添加到marker后面,也就是要求达到linkn的next是new,new的next是linko的目的,显然执行第5行和第4行分别完成上述两个目的。

不知道这样能否加深了解,呵呵。

针对你的问题补充再描述一下。

1.“又假设marker等于linkn”的意思是找到标记节点marker,并假设该节点就是linkn。原题的意思就是希望在标记节点的后面添加新的节点。

2.可能你没有正确理解next的含义。每个结构实例中的next成员表示一个地址,该地址就是链表中下一个节点的首地址,实际上就是一个长整型数。那么,执行第4行语句new->next = marker ->next之后,节点new的next成员就获得了标记节点下一个节点的地址,而执行第5行语句marker->next =new之后,标记节点的next成员就被节点new的地址所取代。举个简单的例子来说:

假设link1=1000,link2=1004,...,linkn=1100,linko=1104,节点都用一个整型地址来表示,那么当它们连接成一个链表后,link1->next=link2=1004,...,linkn->next=linko=1104,又marker=linkn=1100,new=2000,执行第4行语句后new->next就从一个随机数(或称为随机地址)变为marker->next=linkn->next=1104,执行第5行语句之后marker->next=new=2000。

记住,next是一个地址或一个长整型数而已。

Node n = new Node(data,null)

第一步: 一个新进来的节点,next是没有滴。

n.next = this.head

第二步:新节点的next设置成head 。

this.head = n

第三步:把当前节点设置成head 。

Good Luck !


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11442790.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存