首页 > 其他分享 >倒数链表

倒数链表

时间:2024-04-23 09:01:39浏览次数:17  
标签:结点 遍历 倒数 head next 链表 phead

image-20240422214255372

看了上面这个考研专题后,小白经过深思熟虑,可以备份俩个头结点,然后分别进行遍历,因为需要知道倒数第K个结点的地址,所以,当循环遍历时,俩个指针在遍历的时候需要间隔k-1次,所以代码如下:

/*******************************************************************
*
*	name	 :	LinkedList_NewNode
*	function :  寻找倒数第K个节点,并打印data
*	argument :  @data 新结点的数据域的数据
*	retval	 :  None
*	author	 :  [email protected]
*	date	 :  2024/04/22
* 	note	 :  此函数不单独使用,需要配合Insert函数使用
* 	
* *****************************************************************/

bool LinkedList_CountdownDest(LList_t *head,DataType_t k)
{
    int i = 0;
    if(NULL == head->next)                         //判断链表是否为空,为空直接退出
    {    
        printf("linkedlist is empty\n");
        return false;
    }

    LList_t *phead = head;     // 备份头结点
    LList_t *p = head;                // 备份头结点

    while(phead->next)
    {
        phead = phead->next;       // 遍历链表
        if(i >= k-1)
        {
            p = p->next;     //等phead遍历一次以后再参与遍历,寻找循环结束时当前结点的前一个结点
        }
        i++;                 //当i = 1时进行遍历
    }
    printf("%d\n",p->data);

    return true;
}

经过测试后,成功得到倒数第K个结点,并打印出来它的data,如有帮助点个关注

标签:结点,遍历,倒数,head,next,链表,phead
From: https://www.cnblogs.com/xiaobaibudongjiuwen/p/18152028

相关文章

  • 笔试题:设计一个算法删除单链表L(有头结点)中的一个最小值结点
    数据结构——笔试题设计一个算法删除单链表L(有头结点)中的一个最小值结点/*********************************************************funcname:DelMinNode*author:[email protected]*date:2024/04/22*function:删除单链表L(有头结点)中的一个最......
  • 顺序表和链表的练习题
    顺序表题目一:题目分析:该题目需要先对顺序表进行遍历至元素x正确插入位置,再对顺序表完成插入操作。因此涉及到for循环与if语句的使用代码实现/********************************************************************** name : SequenceList_insert* function:实现插......
  • 查找链表中倒数第k(k为正整数)个位置上的结点,查找成功输出该结点的data值,并返回1,否则只
    /********************************************************name:FindKNode* function:查找链表中倒数第k(k为正整数)个位置上的结点*查找成功输出该结点的data值,并返回1,否则只返回0*argument*@head:链表头结点的地......
  • 查找链表中倒数第k个值
    查找链表中倒数第k个值/********************************************************************** name : deletelinkedlist* function:假设该链表只给出了头指针head。在不改变链表的前提下,请设计一个尽可能高效的算法,*查找链表中倒数第k(k为正整数......
  • 删除链表中(有头节点)一个最小值节点
    删除链表中(有头节点)一个最小值节点/********************************************************************** name : deletelinkedlist* function:删除链表中(有头节点)一个最小值节点* argument:* @Head:链表结构体头头节点地址** retval :调用成功......
  • 链表的操作例题
    链表的删除操作题目:设计一个算法删除单链表L(有头结点)中的一个最小值结点。/********************************************name:DelNode*function:删除单链表L中的一个最小值结点*argument:@L:单链表L的地址*retval:None*date:2024/04/22*n......
  • 单向链表遍历插入和删除
    /***********************************************************************************filename:002_单向链表.cauthor:[email protected]:2024/04/22function:单向链表的遍历插入和删除功能的完善note......
  • 删除链表中指定结点
    删除链表中指定结点/********************************************************name:DelTargetNode* function:删除链表中指定的结点*argument*@head:链表头结点的地址*@num:需要删除的第num个结点**retva......
  • 设计一个算法删除单链表L(有头节点)中的一个最小值结点
    数据结构链表笔试题:设计一个算法删除单链表L(有头节点)中的一个最小值结点。/****************************************************************** * filename : linkedlist.c* author : [email protected]* data : 2024/04/22* function : 删除单链表中的一个最小......
  • 链表
    链表在C语言中,链表是一种常用的数据结构,它可以用来存储一系列的元素。链表中的每个元素都存储了下一个元素的地址,从而形成了一条链。这种结构使得在插入和删除元素时不需要像数组那样移动大量元素,因此它在插入和删除操作多的情况下有很大的优势。在C语言中,链表可以有多种实现方......