单链表-删除并释放以L为表头指针的单链表的所有结点(双指针法)

单链表的存储结构:

typedef struct LinkList{
        int data;
        LinkList * next;
    }

分析:
要删除所有结点,怎么删除?
往往都要定义前后指针 pre ,p 毕竟一个指针不够用。

思路:
1.定义两个指针pre,p ,其中pre开始指向头结点 (pre = L).
2.通过while循环,首先释放头结点。然后两个指针,同步后移
3. 循环跳出后,pre指向最后一个节点,最后把该节点删除

C代码实现:

void DestrongList(LinkList * L){
        LinkList * pre = L,* p;
        p = pre->next;
        while(p!=null){
            free(pre);
            pre = p;
            p = p->next;
        } //跳出后,pre指向最后一个节点,最后把该节点删除
        free(pre);
    }
上一篇:个人笔记数据结构与算法———单链表02


下一篇:删除链表中绝对值相等的结点