当前位置: 首页 > 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.判断单链表是否有环

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


关键点


分析:


代码

代码块
	

解决方案总结:

相关文章:

  • 代码随想录训练营第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--换脸
  • “中国游”带火“中国购”,“即买即退”让外国游客购物更丝滑
  • “天链”继续上新!长三乙火箭成功发射天链二号05星
  • 辽宁省信访局副局长于江调任辽宁省监狱管理局局长
  • 海南旅文局通报游客入住酒店港币被调包:成立调查组赴陵水调查
  • 中公教育:去年全面扭亏,经营性现金流增长169.6%
  • 持续更新丨伊朗港口爆炸事件已致406人受伤