首页 > 其他分享 >删除链表中的尾部结点

删除链表中的尾部结点

时间:2024-04-22 20:55:51浏览次数:23  
标签:尾部 结点 head next 链表 temp1

删除链表中的尾部结点
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;
    }

    // 将链表的头结点做备份
    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;
}

标签:尾部,结点,head,next,链表,temp1
From: https://www.cnblogs.com/Dazz24/p/18151516

相关文章

  • 《渣男代码历险记》第五章:设计一个算法删除单链表L(有头结点)中的一个最小值结点
    为了删除单链表L中的一个最小值结点,我们可以遍历链表,找到最小值结点及其前驱结点,然后修改前驱结点的指针,使其指向最小值结点的下一个结点。以下是算法的解析和代码实现:初始化两个指针pre和cur,分别指向头结点和头结点的下一个结点。初始化一个变量min_val,用于存储当前最小值,将其......
  • C语言实现链表增删减改
    /********************************************************************filename: main.cauthor :[email protected] :2024/04/22function:实现对链表的增删改查note :NoneCopyRight(c)[email protected]***......
  • 单向顺序链表的创建,增,删,减,查
    单向顺序链表的创建,增,删,减,查/********************************************************************* filename: 单向顺序链表的创建,增,删,减,查* author :[email protected]* date : 2024-4-22* function:* note :None** CopyRight(c)20241764......
  • 对链表中最小数据项对应的结点删除
    //指的是顺序表中的元素的数据类型,用户可以根据需要进行修改typedefintDataType_t;//构造链表SeqList—_t的结点,结点中包含数据域和指针域,并且所有结点中的数据应该相同typedefstructSeqList{DataType_tData;structSeqList*next;}LinkList_t;//创建......
  • 设计一个算法删除单链表L(有头结点)中的一个最小值结点。
    思路1:定义一个变量=遍历每一个当前地址下面的数据和下一个作比较,谁小把谁的值给这个变量,同时记录这个小值的位置i,依次遍历比较,得到最小值和最小值的结点i的值,然后删除这个结点。思路2:给两个指针,p1,p2开始都指向第一个,然后p2指向下一个地址,和p1下的data作比较,得到的小值的p不动......
  • 2024.04.19每日收获之链表与逻辑操作
    今日处理工作时遇到了一个问题,操作非连发按键时也会唤醒机器,但不会有连发动作,查看代码了解到也是历史遗留问题。它采用掩码形式,将多个按键键值或运算到一起,最后在与收到的按键值与运算来查看该按键是否可以连发,这样有一个弊端,即多个按键的按键值占用多个位,会导致非连发按键的键值......
  • L2-022 重排链表
    原题链接题解找到终点,然后终点往前移,起点往后移,奇数时输出终点所在位置..直到起点终点重合,这时输出尾节点是-1code#include<bits/stdc++.h>usingnamespacestd;structnode{intdata,next,from;}a[100005];intmain(){intstart,n;cin>>start>>n;......
  • 两种解法搞定链表相邻节点交换
    最近还是很喜欢用golang来刷算法题,更接近通用算法,也没有像动态脚本语言那些语法糖,真正靠实力去解决问题。下面这道题很有趣,也是一道链表题目,具体如下:24.SwapNodesinPairsSolvedMediumTopicsCompaniesGivenalinkedlist,swapeverytwoadjacentnodesandreturni......
  • JZ36二叉树排序树与双向链表
    /*structTreeNode{ intval; structTreeNode*left; structTreeNode*right; TreeNode(intx): val(x),left(NULL),right(NULL){ }};*/#include<cstddef>classSolution{public: TreeNode*ans=nullptr; //最终的链表 TreeNode*pre=nullptr; ......
  • 树2-二叉树拷贝, 遍历, 计算叶子结点和高度
    树2-二叉树拷贝,遍历,计算叶子结点和高度二叉树结点typedefstructBinaryNode{charch;structBinaryNode*lChild;structBinaryNode*rChild;}BinaryNode;//叶子结点的数量intsum;二叉树遍历前序//递归遍历(前序)voidRecursion(BinaryNode*roo......