发布网友 发布时间:2022-04-23 01:49
共5个回答
热心网友 时间:2023-10-10 16:03
根据链表的结构来分析~
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.
热心网友 时间:2023-10-10 16:03
L是指针,L=s代表L的值赋值为s,L->next=s表示L所指向对象的next成员的值赋值为s。如果L=NULL,那么L->next=s将会发生非法访问,属于未定义行为,具体行为视编译器和操作系统有所不用,不过现在的操作系统多数运行在保护模式下,这种非法访问会导致程序直接被操作系统结束掉。
热心网友 时间:2023-10-10 16:03
L->next = s 的意思是指针L指向的下一个结点是指针s。 L=s是把指针s赋给指针L,既赋值。
L=null意味着这个链表的data部分是任意值,可能是0,next里面也存放的是一个任意值;表示链表的未尾,链表就此结束。。追问指针s赋给指针L我可以理解为此时的指针L就是指针S吗
热心网友 时间:2023-10-10 16:04
L=null;表示指针L不指向任何一个节点,也就是说L是一个空链
L->next=s 表示指针L的下一个结点是s
L=s 表示L和s指向同一个结点
热心网友 时间:2023-10-10 16:05
一般链表头部第一个数据域为空,仅含一个指针域,所以会是L->next=s;