链表的尾删有几种情况要单独处理?

第一种:没有结点

assert(*pphead);

第二种:只有一个结点

if((*pphead)->next==NULL)
{
    free(*pphead);
    *pphead=NULL;
}

第三种:有多个结点

SLTNode* prev=NULL;
SLTNode* tail=*pphead;

while(tail->next)
{
    prev=tail;
    tail=tail->next;
}
free(tail);
prev->next=NULL;

你可能感兴趣的:(链表,数据结构)