关于《数据结构与算法分析 C语言描述》中删除表的一个问题?

以下程序是书中给出的删除表的方法

void DeleteList(List L)
{
    Position P, Tmp;

    P = L->Next;/*Header assumed*/
    L->Next = NULL;
    while(P != NULL)
    {
        Tmp = P->Next;
        free(P);
        P = Tmp;
    }
}

为什么程序中表头 List L 不需要进行free呢?毕竟它也是指向了一个结构体元素。

答:我的理解:List L是不可以free的
1:free 是把指针指向的那块内存释放了,标记这块内存系统可以回收再用,指针还是存在的,仍然指向这块内存,不free L, 则L->next = null;
如果free L, 这块内存在下一次会被利用重写,L->next地址就不一定在什么地方。
2,free L, 并把 L = null应该是可以的,取决于你的这条指针还要不要继续使用。
答案不一定正确,仅供参考!