题一、 给定单链表,检测是否有环。
使用两个指针p1,p2从链表头开始遍历,p1每次前进一步,p2每次前进两步。如果p2到达链表尾部,说明无环,否则p1、p2必然会在某个时刻相遇(p1==p2),从而检测到链表中有环。
题二、 给定两个单链表(head1, head2),检测两个链表是否有交点,如果有返回第一个交点。
如果head1==head2,那么显然相交,直接返回head1。
否则,分别从head1,head2开始遍历两个链表获得其长度len1与len2。假设len1>=len2,那么指针p1由head1开始向后 移动len1-len2步。指针p2=head2,下面p1、p2每次向后前进一步并比较p1p2是否相等,如果相等即返回该结点,否则说明两个链表没有 交点。
题三、 给定单链表(head),如果有环的话请返回从头结点进入环的第一个节点。
运用题一,我们可以检查链表中是否有环。
如果有环,那么p1p2重合点p必然在环中。从p点断开环,方法为:p1=p, p2=p->next, p->next=NULL。此时,原单链表可以看作两条单链表,一条从head开始,另一条从p2开始,于是运用题二的方法,我们找到它们的第一个 交点即为所求。
题四、只给定单链表中某个结点p(并非最后一个结点,即p->next!=NULL)指针,删除该结点。
办法很简单,首先是放p中数据,然后将p->next的数据copy入p中,接下来删除p->next即可。
题五、只给定单链表中某个结点p(非空结点),在p前面插入一个结点。
办法与前者类似,首先分配一个结点q,将q插入在p后,接下来将p中的数据copy入q中,然后再将要插入的数据记录在p中。
题六、给定单链表头结点,删除链表中倒数第k个结点。
使用两个节点p1,p2,p1初始化指向头结点,p2一直指向p1后第k个节点,两个结点平行向后移动直到p2到达链表尾部(NULL),然后根据p1删除对应结点。
分享到:
相关推荐
C语言链表相关的面试题在软件开发领域的面试中是非常常见的,这是因为链表作为一种基本的数据结构,对于理解数据结构、算法以及内存管理等方面有着重要的作用。以下是一些关于C语言链表的面试题及其详细解释。 1. ...
在讨论具体的面试题之前,我们首先需要了解链表的基本概念及其操作方法。链表是一种常用的数据结构,它通过节点之间的指针链接来存储数据元素。每个节点通常包含两部分:数据域(用于存储实际数据)和指针域(指向下...
【C语言链表类面试题】涉及的知识点主要包括链表数据结构、链表操作和算法设计。链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。 1. **链表逆置** 链表逆置是链表操作中的...
链表是一种基础且重要的数据结构,在计算机科学特别是数据结构...同时,熟悉常见的链表面试题,有助于提升解决实际问题的能力。通过深入学习和实践,我们可以掌握如何有效地利用链表这一数据结构来优化算法和程序设计。
链表反转是常见的面试题,可以通过迭代或递归实现。迭代法通常涉及三个指针:前驱、当前和后续,每次将当前节点的指针指向前驱,然后更新前驱和当前指针。递归法则通过递归调用函数,将当前节点的后续节点设为其...
关于链表的面试题主要考察应聘者对链表这种基本数据结构的理解和操作能力,下面详细讲解每个面试题所涉及的知识点。 题一检测单链表是否有环的知识点: 要检测链表是否有环,可以使用快慢指针的方法。具体操作为,...
对于链表的具体编程实现,通常涉及创建节点类、链表类,并实现相关的函数。这包括但不限于创建节点、添加节点到链表、删除节点、查找节点、反转链表等。在实际编码时,还需要注意内存管理,避免内存泄漏,尤其是在...
"算法大全-面试题-链表-栈-二叉树-数据结构"这个压缩包文件提供了丰富的知识资源,旨在帮助学习者深入理解和应用这些核心概念。 链表是一种线性数据结构,与数组不同,它的元素在内存中不是连续存储的。链表由一...
本文档提供了一系列C++面试题,涵盖了内存拷贝、双向链表、费波那其数列、类的构造函数、析构函数和赋值函数、循环、单向链表类的实现、二叉树实现等多个方面的知识点。 内存拷贝 面试题:写一个函数,完成内存...
数组和链表的区别 在计算机科学中,数组和链表是两种基本的数据结构,它们都广泛应用于软件开发和算法设计中。然而,数组和链表有着根本的区别,这些区别决定了它们在不同的场景下的应用。 数组 数组是一种连续...
在数据结构和算法面试题部分,涵盖了数组、链表、栈、队列、树、图等多种数据结构的知识点,以及排序、搜索、递归、动态规划等算法知识点。 Java 面试题 在 Java 面试题部分,涵盖了 Java 基础知识点,包括 Java ...
某公司在对应聘者做过一轮笔试之后,从中选出n人继续进行面试,每位应聘者按照到达顺序,ID被分配为1~n。 为公平起见,组织者决定利用会议室外的圆桌,按以下方法“随机”确定面试顺序:第一个到达的应聘者在圆桌...
"Java常见数据结构面试题(带答案)" 以下是对Java常见数据结构面试题的...本篇文章主要介绍了Java常见数据结构面试题,涵盖了栈、队列、链表、线性表、树、算法、数据结构等知识点,希望对广大的程序爱好者有所帮助。
【标题】"2021年JAVA开发面试题.zip" 提供的是2021年度针对Java开发人员的面试题目集合。这些题目旨在测试应聘者的Java编程基础、面向对象设计、并发编程、数据结构与算法、框架应用以及系统设计等方面的知识和能力...
面试题是评估求职者技能和知识的重要方式,特别是在IT领域。以下是对提供的面试题的详细解答: 1. **字符串翻转方法**: 实现字符串翻转,可以使用双指针技术,一个从字符串开头开始,另一个从末尾开始,交换它们...
阿里巴巴的Android面试题集主要涵盖了计算机基础、数据结构与算法、Java编程、Android技术以及一些扩展领域的知识。以下是对这些知识点的详细解析: **第一章 计算机基础面试题** 这部分通常包括网络、操作系统和...
我们在找嵌入式方面的工作时,让我们头疼的恐怕就是面试题了,因为我们摸不到企业的命题规律,也不知道该怎样去准备,今天将各大企业的面试题进行汇总,分享给大家,希望可以帮到各位小伙伴。加油哦!
"java中级面试题(自己汇总)" 本文总结了Java中级面试题,涵盖了集合、HashMap、HashSet、HashTable、ConcurrentHashMap、红黑树、Java 8对HashMap的优化、LinkedHashMap、TreeMap、IdentityHashMap等知识点。 ...
以下是一些可能出现在"测试开发面试题"中的关键知识点: 1. **基础概念**: - **软件测试**:理解软件测试的目的是找出程序中的错误、缺陷和遗漏,确保产品的质量。 - **测试类型**:包括单元测试、集成测试、...