void delet(LinkList *list, int n) { LinkList *t = list, *in; int i = 0; while (i < n && t != NULL) { in = t; t = t->next; i++; } if (t != NULL) { in->next = t->next; free(t); } else { puts("节点不存在"); } }
时间: 2024-04-15 09:24:57 浏览: 66
LinkList的实现
这是一个删除链表节点的函数`delet`,它接受两个参数:一个是指向链表头节点的指针`list`,另一个是要删除的节点的位置`n`。
首先,定义了两个指针变量`t`和`in`,并将`t`指向链表头节点`list`,同时初始化一个计数器`i`为0。
然后,通过一个循环遍历链表,直到找到第`n`个节点或者遍历到链表尾部。在每次循环中,将指针`in`指向当前节点`t`,将指针`t`指向下一个节点,并将计数器`i`自增1。
接着,判断指针`t`是否为NULL。如果不为NULL,表示找到了第`n`个节点,那么将指针`in`的`next`指针指向节点`t`的下一个节点,即跳过节点`t`,将其从链表中删除。
然后,通过`free`函数释放被删除节点`t`的内存空间。
如果指针`t`为NULL,表示找不到第`n`个节点,输出提示信息"节点不存在"。
这样,函数就完成了对链表中指定位置节点的删除操作。
阅读全文