c语言基础的数据结构,我感觉自己什么都不会

我想问问怎么free掉链表的无用节点空间,就是这两个题目,图片

只有在删除节点的时候才会出现无用节点,在删除的时候,用一个指针表示待删除节点,前驱结点指向待删除节点的后继节点(双向链表还需要带删除的后继节点的前驱指向待删除的前驱),然后调用
free(待删除);
如果是清空链表,先记录下当前节点的后继,然后再释放当前,以此类推