单链表中L->next=s ; 和L=s;的区别 ,其中L是头指针,初始L=null,

L=null是不是意味着这个链表的data部分是0,next也是0呢?... L=null是不是意味着这个链表的data部分是0,next也是0呢? 展开
 我来答
百度网友86f3a5a
推荐于2017-11-25 · TA获得超过270个赞
知道小有建树答主
回答量:151
采纳率:0%
帮助的人:74.1万
展开全部
根据链表的结构来分析~
struct Link{
int data;
struct *next;
};

然后我们定义一个 链表 Link L=NULL; 这句话的意思就说,我定义了一个指针 L,L指向内存中以Link 结构形式开辟的一块空间的地址,当你将NULL赋值给L,表示L不指向空间的任何位置。即,我们定义了一个空链表。

L->next 是典型的用指针访问数据的形式,L->next=s表示将s的地址记录进L的指针域中,而L=s则是将s的地址给L,行为是舍弃头节点,将s作为新的头节点。

如果你移动了头指针,那么头指针新位置之前的所有节点都将丢失,一般移动头节点都发生在销毁链表的时候,否则不会轻易的移动头指针,不过如果你是自定义的指针让他指向头节点,那是没关系的。。。。

希望对你有帮助哦~
追问
L=s则是将s的地址给L,行为是舍弃头节点,将s作为新的头节点 
这句,是s的首地址给L的next部分还是其他的,这个真心不理解,求解
追答
L 其实只是指针,指向内存中的一个地址,这个地址被一个LINK  类型的数据占据,我们在  L=S 时,是修改了 L的指向,将L指向S所指向的地址,比如说,L 原来指向 北京  S原来指向上海,,,,,你将L=s,,,,,就是让L指向了上海   并没有影响北京,  但是由于北京没有指针指向他   所以我们就找不到她了   那么他就相当于被抛弃了.

L=s 是将S的首地址给了 L~ L->next=s 才是将s给了next.
v2abcd
2012-10-12 · TA获得超过197个赞
知道小有建树答主
回答量:384
采纳率:0%
帮助的人:240万
展开全部
L是指针,L=s代表L的值赋值为s,L->next=s表示L所指向对象的next成员的值赋值为s。如果L=NULL,那么L->next=s将会发生非法访问,属于未定义行为,具体行为视编译器和操作系统有所不用,不过现在的操作系统多数运行在保护模式下,这种非法访问会导致程序直接被操作系统结束掉。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秀二一16
2012-10-12
知道答主
回答量:12
采纳率:0%
帮助的人:9.3万
展开全部
L->next = s 的意思是指针L指向的下一个结点是指针s。 L=s是把指针s赋给指针L,既赋值。
L=null意味着这个链表的data部分是任意值,可能是0,next里面也存放的是一个任意值;表示链表的未尾,链表就此结束。。
追问
指针s赋给指针L我可以理解为此时的指针L就是指针S吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
silenceandluo
2012-10-12 · TA获得超过1046个赞
知道小有建树答主
回答量:713
采纳率:0%
帮助的人:263万
展开全部
L=null;表示指针L不指向任何一个节点,也就是说L是一个空链
L->next=s 表示指针L的下一个结点是s
L=s 表示L和s指向同一个结点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lxl无名
2012-10-12 · TA获得超过179个赞
知道答主
回答量:114
采纳率:0%
帮助的人:75.8万
展开全部
一般链表头部第一个数据域为空,仅含一个指针域,所以会是L->next=s;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式