单链表p->next->next怎么理解
时间: 2024-05-28 10:09:50 浏览: 123
单链表p->next->next表示从当前节点p到下一个节点的指针,再到下一个节点的指针。总的来说,这个表达式表示链表中的第三个节点。具体解释如下:
- p是当前节点的指针;
- ->next表示指向下一个节点的指针;
- 再次使用->next表示指向下一个节点的下一个节点的指针,也就是第三个节点。
因此,p->next->next就是指向当前节点的下一个节点再到下一个节点的指针,也就是单链表中的第三个节点。
相关问题
在一个单链表结构中,指针p指向链表的倒数第二个结点;指针s指向新结点,则能将s所指的结点插入到链表未尾的语句组是 () A. p=p->next; s->next=p; p->next=s B. S--next=NULL; p=p--next; p-snext=s C. p=p->next; s->next=p->next; p->next=s ] D. p=(*p).next; (*s).next=(*p).next; (*p).next=s
A. p=p->next; s->next=NULL; p->next=s
解析:首先需要让p指向倒数第二个结点,因此需要执行 p=p->next。然后将新结点s插入到链表末尾,需要将p所指结点的next指针指向s,同时需要将s的next指针置为NULL,因为它是新的末尾结点。因此,完整的语句组应该是 p=p->next; s->next=NULL; p->next=s。
假设单链表结点结构为(data,next),删除指针 p 所指结点的后继结点 q 的语句序列是 ( )。 A.p->next=q->next; free(q); B.p->next=q; free(q); C.free(q);p->next=q->next; D.free(q);p->next=q;
删除指针 p 所指结点的后继结点 q 的语句序列应该是 A.p->next=q->next; free(q);。这是因为:
- 首先需要将 p 的指针域指向 q 的后继结点,即 p->next=q->next;
- 然后需要释放 q 所指结点的内存空间,即 free(q)。
其他选项的语句序列有误:
- B.p->next=q; 会将 p 的指针域指向 q,而不是 q 的后继结点;
- C.free(q);p->next=q->next; 会先释放 q 所指结点的内存空间,再将 p 的指针域指向 q 的后继结点,这样就会导致 q 所指结点的内存泄漏;
- D.free(q);p->next=q; 会先释放 q 所指结点的内存空间,再将 p 的指针域指向 q,这样就会出现指针悬挂的情况。
阅读全文