题目
已知L是带表头结点的非空单链表,且P结点既不是首元结点,也不是尾结点,试从下列提供的答案中选择合适的语句序列。删除P结点的直接后继结点的语句序列是________。删除P结点的语句序列是________。(1) P = P->next ; (2) P->next = P; (3) P->next = P->next->next(4) P->next = P->next->next; (5) while(P!=NULL) P = P->next ;(6) while(Q->next != NULL) (P = Q; Q=Q->next;)(7) while(P->next != Q) P = P->next;(8) while(P->next->next != Q) P = P->next;(9) while(P->next->next != NULL) P = P->next;(10) Q = P; (11) Q = P->next; (12) P = L ;(13) L = L->next; (14) free(Q);
已知L是带表头结点的非空单链表,且P结点既不是首元结点,也不是尾结点,试从下列提供的答案中选择合适的语句序列。
删除P结点的直接后继结点的语句序列是________。
删除P结点的语句序列是________。
(1) P = P->next ; (2) P->next = P; (3) P->next = P->next->next
(4) P->next = P->next->next; (5) while(P!=NULL) P = P->next ;
(6) while(Q->next != NULL) {P = Q; Q=Q->next;}
(7) while(P->next != Q) P = P->next;
(8) while(P->next->next != Q) P = P->next;
(9) while(P->next->next != NULL) P = P->next;
(10) Q = P; (11) Q = P->next; (12) P = L ;
(13) L = L->next; (14) free(Q);
题目解答
答案
(11)(4)(14) (10)(12)(7)(4)(14)
解析
步骤 1:删除P结点的直接后继结点
首先,我们需要找到P结点的直接后继结点,即P->next。然后,我们需要将P结点的next指针指向P结点的直接后继结点的直接后继结点,即P->next->next。最后,我们需要释放P结点的直接后继结点的内存。
步骤 2:删除P结点
首先,我们需要找到P结点的直接前驱结点。然后,我们需要将P结点的直接前驱结点的next指针指向P结点的直接后继结点。最后,我们需要释放P结点的内存。
首先,我们需要找到P结点的直接后继结点,即P->next。然后,我们需要将P结点的next指针指向P结点的直接后继结点的直接后继结点,即P->next->next。最后,我们需要释放P结点的直接后继结点的内存。
步骤 2:删除P结点
首先,我们需要找到P结点的直接前驱结点。然后,我们需要将P结点的直接前驱结点的next指针指向P结点的直接后继结点。最后,我们需要释放P结点的内存。