删除单向链表中的尾部结点

删除链表中的尾部结点
image

/******************************************************
 *
 *  name      :  DelTailNode
 *	function  :  删除链表尾部结点
 *  argument
 *               @head :链表头结点的地址
 *
 *  retval    : 成功返回1,失败返回0
 *  author    : Dazz
 *  date      : 2024/4/22
 *  note      : None
 *
 * *******************************************************/
bool DelTailNode(LinkList_t *head, )
{
    // 错误处理
    if (NULL == head)
    {
        printf("请输入有效地址\n");
        return false;
    }
	
	//判断链表是否为空
	if( NULL == head->next)
	{
	return false;
	}

    // 将链表的头结点做备份
    LinkList_t *temp1 = head;
    // 将链表的头结点的直接后继做备份
    LinkList_t *temp2 = head->next;

    // 遍历链表,找到尾部结点和尾部结点的直接前驱
    while (temp2->next || temp1->next)
    {
        temp1 = temp1->next;
        temp2 = temp2->next;
    }

    // 将尾部结点的直接前驱的指针域指向NULL
    temp1->next = NULL;

    // 删除尾部结点
    free(temp2);

    return true;
}
posted @ 2024-04-22 20:50  Dazz_24  阅读(21)  评论(0)    收藏  举报