首页 > 其他分享 >查找链表中倒数第k个数

查找链表中倒数第k个数

时间:2024-04-22 21:00:35浏览次数:12  
标签:结点 int Head next 链表 LList 查找 倒数第

include <stdio.h>

include <stdbool.h>

include <stdlib.h>

/*******************************************************************
*

  • 函数名称: MinDelate
  • 函数功能: /*假设该链表只给出了头指针 head。在不改变链表的前提下,请设计一个尽可能高效的算法,
    查找链表中倒数第k(k为正整数个位置上的结点。若查找成功,算法输出该结点的data值,并返回1,否则,只返回0
  • 函数参数: LList_t *Head int k
  • 返回结果: 查找成功或否
  • 注意事项: None
  • 函数作者: [email protected]
  • 创建日期: 2024/04/22
  • 修改历史:
  • 函数版本: V1.0
  • *****************************************************************/

// 指的是单向链表中的结点有效数据类型,用户可以根据需要进行修改
typedef int DataType_t;

// 构造链表的结点,链表中所有结点的数据类型应该是相同的
typedef struct LinkedList
{
DataType_t data; // 结点的数据域
struct LinkedList *next; // 结点的指针域

} LList_t;

int LList_FindDataPut(LList_t *Head, int k)
{

LList_t *Phead1 = Head->next;
LList_t *Phead2 = Head->next;
int count = 0; // 计数器

while (Phead1->next)
{
    Phead1 = Phead1->next; // 遍历到尾的地址
    count++;
}
if (k > count)
{
    return 0;
}
for (int i = 0; i < count - k; i++)
{
    Phead2 = Phead2->next;
}
printf("K-th to last data = %d\n", Phead2->data);
return 1;

}

标签:结点,int,Head,next,链表,LList,查找,倒数第
From: https://www.cnblogs.com/zeratul/p/18151531

相关文章

  • C语言单向链表的创建和增删减查相关程序
    对单向链表进行删除和插入的程序设计/********************************************************************* filename: linkedlist.c* author :[email protected]* date :2024/04/22* function:实现单向链表的创建、拆入、删除功能* note :None**......
  • 删除链表中最小的一个结点
    include<stdio.h>include<stdbool.h>include<stdlib.h>//指的是单向链表中的结点有效数据类型,用户可以根据需要进行修改typedefintDataType_t;//构造链表的结点,链表中所有结点的数据类型应该是相同的typedefstructLinkedList{DataType_tdata;//结点......
  • 删除链表中的尾部结点
    删除链表中的尾部结点/********************************************************name:DelTailNode* function:删除链表尾部结点*argument*@head:链表头结点的地址**retval:成功返回1,失败返回0*author:Dazz*......
  • 《渣男代码历险记》第五章:设计一个算法删除单链表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不动......
  • Word查找替换通配符(软件著作权用代码文档需求)
    在提交软件著作权所需的代码文档时,需要去掉空行、注释等无关内容,使用Word可以很方便的处理:1、查找//开头的注释,并删除:勾选:通配符,查找://*^13,替换为:^p2、查找/*开头,*/结尾的注释,并删除:勾选:通配符,查找:(/\*)*(\*/),替换为:空3、查找包含制表符的多个空行,并删除:勾选:通配符,查找:(^13)^t......
  • 2024.04.19每日收获之链表与逻辑操作
    今日处理工作时遇到了一个问题,操作非连发按键时也会唤醒机器,但不会有连发动作,查看代码了解到也是历史遗留问题。它采用掩码形式,将多个按键键值或运算到一起,最后在与收到的按键值与运算来查看该按键是否可以连发,这样有一个弊端,即多个按键的按键值占用多个位,会导致非连发按键的键值......