首页 > 其他分享 >数据结构单向链表——找到并输出倒数第k个结点的数据

数据结构单向链表——找到并输出倒数第k个结点的数据

时间:2024-04-23 10:35:37浏览次数:23  
标签:结点 Head next 链表 kp data 倒数第 指针

image

/**********************************************************************************************
*   func name       : LList_Last_k_find
*   function        : Find the last k node of link list and print data
*   func parameter  : 
*                       @Head :address of the head node 
*   return resuolt  : Find success result (true or failse)
*   author          : [email protected]
*   date            : 2024/04/21
*   note            : None
*   modify history  : None
*   function section: v1.0
*
**********************************************************************************************/
bool LList_Last_k_Del(LList_t *Head, int k)
{
    //错误判断
  if (NULL == Head->next)
  {
    return false;
  }
  LList_t *p = Head;//参考指针
  LList_t *kp = Head;//指向倒数第k个结点的目标指针
  //参考指针先移动k个结点
  for (int i = 0; i < k; i++)
  {
    //printf("p.data=%d,p.next=%#x\n", p->data, p->next);
    //当还没移动k个单位,参考结点已指向尾指针,说明没有倒数第k个结点,直接退出函数,并输出提示
    if (p->next == NULL)
    {
      printf("Link list note count is less than %d\n", k);
      return false;
    }
    p = p->next;
  }
  //目标结点再移动一个单位
  kp = kp->next;
  //此时参考节点与目标结点已经相差k个单位
  //循环使得参考指针和目标指针同事移动一个单位,直到参考指针到达尾节点,目标指针到达倒数第k个结点的指定位置
  while (p->next)
  {
    p = p->next;
    kp = kp->next;
  }
  //输出目标结点的数据域
  printf ("data of the last %d node is %d\n",k,kp->data);
  return true;
}

标签:结点,Head,next,链表,kp,data,倒数第,指针
From: https://www.cnblogs.com/JinBool/p/18152277

相关文章

  • 数据结构链表笔试题
    /***********************************************************************************************funcname:Minnote_Del*function:Deletetheminnodeoflinklist*funcparameter:*@Head:addressoftheh......
  • 链表笔试题
    链表笔试题假设该链表只给出了头指针head。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k(k为正整数)个位置上的结点。若查找成功,算法输出该结点的data值,并返回1;否则只返回0。要求:(1)描述算法的基本设计思想.(2)描述算法的详细实现步骤.(3)根据......
  • 单向链表的插入删除和遍历
    /*********************************************************************************************************** FileName:LinkedList * Author:madman_LX*Contactme:[email protected]* Date :2024/04/22* Function:单向链表的遍历,插......
  • C语言单向链表的增删操作
    //指的是单向链表中的结点有效数据类型,用户可以根据需要进行修改typedefintDataType_t;//构造链表的结点,链表中所有结点的数据类型应该是相同的typedefstructLinkedList{  DataType_tdata;    //结点的数据域  structLinkedList*next;......
  • 笔试题:查找链表中倒数第k(k为正整数)个位置上的结点
    数据结构链表笔试题:(1)算法的基本设计思想:定义两个结构体指针FPhead和SPhead,其中,FPhead需要从头遍历链表,当FPhead和SPhead之间的距离相差k-1,则调动SPhead开始遍历链表,从而确定倒数第k个位置上的结点。(2)算法的详细实现步骤:定义一个整型变量用来储存两个结构体指针FPhead和SP......
  • 数据结构链表笔试题
    数据结构链表笔试题笔试题3:设计一个算法删除单链表L(有头结点)中的一个最小值结点/********************************************************************* 函数名称: LList_Del* 函数功能:删除链表中最小值节点* 函数参数: * @L:传递头节点的地址*返回......
  • 倒数链表
    看了上面这个考研专题后,小白经过深思熟虑,可以备份俩个头结点,然后分别进行遍历,因为需要知道倒数第K个结点的地址,所以,当循环遍历时,俩个指针在遍历的时候需要间隔k-1次,所以代码如下:/********************************************************************* name : LinkedList_......
  • 笔试题:设计一个算法删除单链表L(有头结点)中的一个最小值结点
    数据结构——笔试题设计一个算法删除单链表L(有头结点)中的一个最小值结点/*********************************************************funcname:DelMinNode*author:[email protected]*date:2024/04/22*function:删除单链表L(有头结点)中的一个最......
  • JZ8 二叉树的下一个结点
    #include<cstddef>classSolution{public:vector<TreeLinkNode*>nodes;//用户得到的输入只有一个子树根节点TreeLinkNode*GetNext(TreeLinkNode*pNode){TreeLinkNode*root=pNode;//获取根节点 //顺着next指针一直......
  • 顺序表和链表的练习题
    顺序表题目一:题目分析:该题目需要先对顺序表进行遍历至元素x正确插入位置,再对顺序表完成插入操作。因此涉及到for循环与if语句的使用代码实现/********************************************************************** name : SequenceList_insert* function:实现插......