当前位置: 首页 > news >正文

CExercise_12_单链表面试题_1求链表中间结点的值,判断单链表是否有环

题目:

基于链表的结点定义:


typedef struct node {
 int data;
 struct node *next;
} Node;

以及相应的二级指针尾插法构建单链表:

// 实现尾插法构建链表
void insert_tail(Node **head, int new_data) {
    // 1.分配新结点,初始化它
    Node *new_node = malloc(sizeof(Node));
    if (new_node == NULL) {
        printf("error: malloc failed in insert_tail.\n");
        exit(1);
    }
    new_node->data = new_data;
    new_node->next = NULL;
    // 3.链表非空时,让原本最后一个结点指向新结点
    if (*head != NULL) {
        // 2.遍历找到最后一个结点
        Node *end = *head;
        while (end->next != NULL) {
            end = end->next;
        } // while循环结束时, end指向最后一个结点
        end->next = new_node;
        return;
    }
    // 链表尾插之前是空的,那就直接更新头指针就行了
    *head = new_node;
}

后续单链表的面试题,也请基于此链表结点的定义,以及尾插法构建链表实现。 利用快慢指针法,直接求解下列两个问题:

1.求链表中间结点的值

2.判断单链表是否有环

注意: 不仅要定义函数实现对应功能,还需要编写测试用例,进行测试。尤其是测试单链表有环,要自己构建出一条有环的单链表进行测试。


关键点


分析:


代码

代码块
	

解决方案总结:

http://www.dtcms.com/a/131850.html

相关文章:

  • 代码随想录训练营第31天 || 56. 合并区间 738. 单调递增的数字
  • gitee基本使用
  • Shell编程之循环语句
  • 【前端样式】使用Flexbox实现经典导航栏:自适应间距与移动端折叠实战
  • MATLAB基本数据类型
  • 如何一键自动提取CAD图中的中心线(如墙体、道路、巷道中心线等)
  • Android常见界面控件、程序活动单元Activity练习
  • LeetCode算法题(Go语言实现)_46
  • 3.2.2.3 Spring Boot配置拦截器
  • C++学习之数据库操作
  • AI日报 - 2025年4月15日
  • 华为OD机试真题——阿里巴巴找黄金宝箱 IV(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • 子串-滑动窗口的最大值
  • 科研软件分享
  • AI agents系列之全从零开始构建
  • 批处理(Batch Processing)的详解、流程及框架/工具的详细对比
  • 前端工程化之自动化构建
  • .NET MCP 文档
  • 多模态思维链(Multimodal Chain of Thought, MCoT)六大技术支柱在医疗领域的应用
  • OpenCv--换脸
  • 群辉搭建静态网站
  • 基于 Qt 的 BMP 图像数据存取至 SQLite 数据库的实现
  • WSL2 配置和离线安装linux系统。
  • 基础算法篇(5)(蓝桥杯常考点)—动态规划(C/C++)
  • PyCharm 开发工具 修改字体大小及使用滚轮没有反应
  • 【Wasserstein-1 距离】
  • Spring Boot + ShardingSphere 分库分表实战:电商订单场景案例
  • cline 提示词工程指南-架构篇
  • 美团即时零售大动作,将独立的闪购将会改变什么?
  • UE5 设置父物体和解除父子关系(移除子物体)