要删除在指定节点之后存在的节点,需要跳过所需数量的节点以到达节点,之后的节点将被删除。 需要跟踪这两个节点。如果在该节点之前存在的节点,则将删除该节点。 为此,使用了两个指针:ptr和ptr1。
使用以下语句来执行此操作。
ptr = head; for (i = 0;i < loc;i++) { ptr1 = ptr; ptr = ptr->next; if (ptr == NULL) { printf("There are less than %d elements in the list..", loc); return; } }
现在,任务差不多完成了,只需要做一些指针调整。 使ptr1(指向指定节点)的下一个指向ptr的下一个(要删除的节点)。
这将通过使用以下语句来完成。
ptr1 ->next = ptr ->next; free(ptr);
算法
第1步:如果HEAD = NULL 打印提示内存溢出 转到第10步 结束时间 第2步:设置TEMP = HEAD 第3步:设置I = 0 第4步:重复第5步到第8步直到 I 第5步:TEMP1 = TEMP 第6步:TEMP = TEMP→NEXT 第7步:如果TEMP = NULL 提示“不存在节点” 转到第12步 结束条件 第8步:I = I + 1 循环结束 第9步:TEMP1→NEXT = TEMP→NEXT 第10步:释放 TEMP 第11步:退出
示意图 –