欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年面试题目链表专题-数据结构与算法-tchlinux .pdf

    • 资源ID:40157784       资源大小:41.28KB        全文页数:5页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年面试题目链表专题-数据结构与算法-tchlinux .pdf

    面试的时候,书写程序要注意以下几点1.确认了解题意,如果对题意了解不清,应该向面试人员问清楚2.明确题意后,首先思考找到一个复杂度可以接受的正确算法,并表述出来,注意可以在草稿纸上写写划划,进行验证3.观察复杂度能否再次降低4.书写程序时,一定要认真,坚决防止出现逻辑错误,并根据程序具体分析可能的极端情况,处理好边界,并自己进行用例测试,以验证程序。节点的定义如下:typedef struct list int key;struct list*next;list;(1)已知链表的头结点head,写一个函数把这个链表逆序(Intel)list*reverse(list*head)list*h=head;list*new_head=NULL,*temp;if(h=NULL)return h;/如果是空链表do temp=h;h=h-next;temp-next=new_head;new_head=temp;while(h!=NULL&h!=head)/检测是循环链表return new_head;其实还要注意一点,链表内部是否包含小环。(2)已知两个链表 head1 和 head2 各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同)list*merge(list*list1_head,list*list2_head)名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 5 页 -其实需要问一下,head1 head2 是否都是从大到小,这点一定要明确,不能默认两个是相同的规格排序。(3)已知两个链表 head1 和 head2 各自有序,请把它们合并成一个链表依然有序,这次要求用递归方法进行。(Autodesk)list*merge(list*list1_head,list*list2_head)list*res;if(list1_head=NULL)return list2_head;if(list2_head=NULL)return list1_head;if(list1_head-key list2_head-key)res=list1_head;res-next=merge(list1_head-next,list2_head);else res=list2_head;res-next=merge(list1_head,list2_head-next);return res;(4)写一个程序,计算链表的长度unsigned int list_len(list*head)unsigned int len=0;list*h=head;if(h=NULL)return 0;d0 len+;h=h-next;while(h!=NULL&h!=head)return len;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 5 页 -如果是循环链表?(5)有一个链表 L,其每个节点有 2 个指针,一个指针next 指向链表的下个节点,另一个 random 随机指向链表中的任一个节点,可能是自己或者为空,写一个程序,要求复制这个链表的结构并分析其复杂性。这个题目的思路很巧妙。当然简单的方法,可以利用一个map 或者 hash,将链表的 random 指针的指向,保存起来。这样有O(n)存储空间的浪费,时间基本可以接近 O(n).实际上可以这样来做:我们将新的链表节点,插入到原来链表节点当中,并且修改原来的链表的 random 指针,使得该指针由我们现在的新节点所有。实际上形成下面这样一种结构,同时将原来 o 的 random 指针的值,复制给它后面的现在的的 random 指针,该结构如下:o-o-o-NULL现在可以利用 拥有的 random 指针方便的找到它真正的random 指针。因为原来的的 random 指针指向 o 的 random 指针,只要把让-random=-random-next,random就是真正的那个指针了,然后我们再把从这个链表中删除。(6)给你一个单向链表的头指针,可能最后不是NULL 终止,而是循环链表。题目问你怎么找出这个链表循环部分的第一个节点。这个原来的判断链表环的扩展,需要求出环的开始点。只要稍微对原来的方法进行扩展,也就可以解决这个问题。使用两个指针一个步长为1,另一个步长为 2,如果第二个指针可以追上第一个指针,则说明有环。这样我们首先可以求出环的长度 L,然后在设两个步长为1 的指针,让他们间距为L,这样第一个相等的地方,就是环的起点。还有一个更好的方法,就是在步长为1,步长为 2 指针相遇后,再从头开始一个步长为 1 的指针,然后开始步长为1 的指针继续行进,当这两个指针相遇的地方就是环的起点。(7)(华为面试题)找出单向链表中中间结点名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 5 页 -这个可以借鉴上面的方法,利用步长为 1,步长为 2 指针,当步长为 2 的指针到达末尾时,指针 1 就刚好达到中间。(8)题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点。链表结点的定义如下:struct ListNode int m_nKey;ListNode*m_pNext;函数的声明如下:void DeleteNode(ListNode*pListHead,ListNode*pToBeDeleted);实际上我们可以将该节点的下一个节点的值copy 到这个节点,然后删除下一个节点。这样实际上就将一个不能处理的情况,通过一种技巧转化成了我们可以处理的正常情况。但是还需要注意下面这个边界情况:如果要删除的是尾指针?这就意味着当前节点没有下一个节点。通过这点我们也可以发现,如果认真考虑各个因素,思路清晰,还是很容易发现各种异常情况的,保证严谨的思考。(9)如何检查一个单向链表上是否有环?见(6)(10)查找链表中倒数第k 个结点这个可以参考(7),我们可以设置步长相同,间距为k 的指针,其特点在当内存无法存放所有元素,需要从硬盘读取时,性能卓越,k 在可以接受的情况下可以一次读取到内存,大大提高了效率。但是仍需要注意考虑边界情况:(细节,如,假如链表的长度不足m,它就不存在 m 个元素,因此必须在两个指针的出发阶段检查最先出发的当前指针是否已经到了链表尾。)名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 5 页 -(11)题目:两个单向链表,开头结点不一样,在中间某处开始,结点一样了,找出它们的第一个公共结点。这个问题,可以通过判断最后一个节点是否相同,判断是否相交。如果相交,可以统计两个链表的长度,设一个为a,一个为 b,然后这样再搞两个指针,一个先走|a-b|步,另一个再走,当它们相等时就是第一个公共结点。再附三个有意思的小题,虽然不是链表相关的。1.如何判断一个整数是不是完全平方数(不允许开方).单调函数可以二分查找。2.不知长度的日志文件,如何等概率选出100 条。3.一个唱片,可以被分成 8 个大小一样的小扇形.要求给每个扇形涂上红色或者蓝色,使得唱片旋转起来以后,按照顺序读出颜色序列,就能判断唱片是顺时针旋转还是逆时针。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 5 页 -

    注意事项

    本文(2022年面试题目链表专题-数据结构与算法-tchlinux .pdf)为本站会员(H****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开