首页 > 其他分享 >数据结构-链表-2

数据结构-链表-2

时间:2024-04-26 19:34:53浏览次数:27  
标签:结点 head Head 链表 LinList 数据结构 data

本函数功能为将查找单链表中的倒数第k个结点将其data输出


<! -- RevCount.c文件(查找单链表中的倒数第k个结点将其data输出)的实现 -->

/*****************************************************************************
 *
 *  func name :  LinList_RevCount
 *  function  :  将查找单链表中的倒数第k个结点将其data输出
 *  argument  :
 *              @*Head :单链表的头结点
 *              @ K    :指定倒数结点位置
 *
 *  retval    :  bool(true or false)
 *  note      :  None
 *  author    :  [email protected]
 *  date      :  2024/04/23
 *  history   :
 *  version   :  V1.0
 *
 ******************************************************************************/

bool LinList_RevCount(LinList *Head, int k)
{
    LinList *Bhead = Head;
    LinList *Chead = Head;
    LinList *temp;
    int i = 0;
    int z = 0;
    if (Head->next == 0)// 判断传进的链表是否为空
        return false;
    while (Bhead->next)// 遍历一遍链表,统计除了头结点外结点的个数
    {
        Bhead = Bhead->next;
        i++;
    }

    while (Chead->next)// 找到倒数第k个结点的位置
    {
        if (z == (i - k))
            break;
        Chead = Chead->next;
        z++;
    }
    temp = Chead->next;
    printf("The reciprocal %d node's data is %d\n", k, temp->data);// 输出倒数第k个结点的data值

    return true;
}

<! -- 主函数的实现 -->

/*******************************************************************************************
 *  file name : RevCount
 *  author    : [email protected]
 *  date      : 2024/04/23
 *  function  : 将查找单链表中的倒数第k个结点将其data输出
 *  note      : None
 *
 *  CopyRight (c)   2024    [email protected]  All Right Reseverd
 * ******************************************************************************************/
int main()
{
    int i;
    LinList *head = LinList_Creat();// 创建链表
    LinList_HeadAdd(head, 10);
    LinList_TailAdd(head, 18);
    LinList_MidAdd(head, 10, 2);
    LinList_MidAdd(head, 2, 15);
    LinList_MidAdd(head, 15, 16);
    LinList_Print(head);// 遍历一遍链表并输出当前的链表
    i = LinList_RevCount(head, 3);// 显示倒数第k的结点的值为多少
    printf("%d\n", i);// 显示返回值
}

<! -- 使用到的函数有:
LinList_HeadAdd(LinList *Head, Datatype_t data)(头插函数)
LinList_MidAdd(LinList *Head, Datatype_t Destdata, Datatype_t data)(使用中间指定位置插入函数)
LinList_TailAdd(LinList *Head, Datatype_t data)(尾插函数)
LinList_Print(LinList *Head)(遍历链表并输出函数)
-->


<! -- 运行结果图 -->

image

标签:结点,head,Head,链表,LinList,数据结构,data
From: https://www.cnblogs.com/Qiao-dao-shou-ruan/p/18153565

相关文章

  • 双向循环链表队列的接口设计
    /***********************************************************************************************************该程序实现循环队列元素的增删改查,目的是提高设计程序的逻辑思维,另外为了提高可移植性,所以循环队列中元素*的数据类型为DataType_t,用户可以根据实际情况......
  • TODO-力扣-707. 设计链表
    1.题目题目地址(707.设计链表-力扣(LeetCode))https://leetcode.cn/problems/design-linked-list/题目描述你可以选择使用单链表或者双链表,设计并实现自己的链表。单链表中的节点应该具备两个属性:val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果......
  • 数据结构算法题
    数据结构算法题通过键盘输入一个包括'('和')'的字符串string,判断字符串是否有效。要求设计算法实现检查字符串是否有效,有效的字符串需满足以下条件:A.左括号必须用相同类型的右括号闭合。B.左括号必须以正确的顺序闭合。C.每个右括号都有一个对应的相同类型的左括号。思......
  • 双向循环链表的删除、插入
    双向循环链表双向循环链表是一种特殊的链表结构,它结合了双向链表和循环链表的特点。在双向循环链表中,每个节点都有两个指针,一个指向前一个节点,另一个指向后一个节点,从而形成双向链接。同时,链表的头节点和尾节点相互链接,形成一个循环结构。这种结构使得双向循环链表在遍历和操作......
  • 双向循环链表的插入处理函数接口
    //方便访问,创建一个带头结点的双向循环链表//链表数据域取别名方便修改typedefintDataType_t;//构造双向循环链表的结点typedefstructDoubleCircularLList{DataType_tdata;//数据域structDoublLingkedList*prev;//直接前驱指针域......
  • C语言数据结构:顺序栈的创建、出入栈,以及使用顺序栈实现十进制转十六进制
    /***********************************************************************************************************该程序实现顺序栈元素的增删改查,目的是提高设计程序的逻辑思维,另外为了提高可移植性,所以顺序栈中元素的*数据类型为DataType_t,用户可以根据实际情况修改......
  • 单向循环链表实现头插、尾插、中间插、头删、尾删、中间删
    *name:单向循环链表*author:[email protected]*data:2024/04/23*function:设计一个单向循环链表,实现头插、尾插、中间插、头删、尾删、中间删*noto:None**CopyRight(c)[email protected]******......
  • 以链表作为基础实现栈空间(链式栈)
    数据结构以链表作为基础实现栈空间(链式栈)/****************************************************************************************************************** * filename : LinkedStack.c* author : [email protected]* data : 2024/04/25* function : 链式栈......
  • 单链表的头插、尾插、中间插、头删、尾删、中间删
    //指的是单向链表中的结点有效数据类型,用户可以根据需要进行修改typedefintDataType_t;//构造链表的结点,链表中所有结点的数据类型应该是相同的typedefstructLinkedList{ DataType_t data;//结点的数据域 structLinkedList *next;//结点的指针域}LList_t;......
  • 单向链表的学习
    单向链表的学习链表:链式存储的线性表。单向链表的优缺点优点插入、删除时只需要调整几个指针,无需移动任何数据当数据节点数量较多时,无需一整片较大的连续内存空间,可以灵活利用离散的内存当数据节点数量变化剧烈时,内存的释放和分配灵活,速度快缺点在节点中,需要多余的指......