2022年面试题目链表专题-数据结构与算法-tchlinux .pdf
《2022年面试题目链表专题-数据结构与算法-tchlinux .pdf》由会员分享,可在线阅读,更多相关《2022年面试题目链表专题-数据结构与算法-tchlinux .pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面试的时候,书写程序要注意以下几点1.确认了解题意,如果对题意了解不清,应该向面试人员问清楚2.明确题意后,首先思考找到一个复杂度可以接受的正确算法,并表述出来,注意可以在草稿纸上写写划划,进行验证3.观察复杂度能否再次降低4.书写程序时,一定要认真,坚决防止出现逻辑错误,并根据程序具体分析可能的极端情况,处理好边界,并自己进行用例测试,以验证程序。节点的定义如下:typedef struct list int key;struct list*next;list;(1)已知链表的头结点head,写一个函数把这个链表逆序(Intel)list*reverse(list*head)list*h=h
2、ead;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)名师资料总结-精品资料欢迎下载-名师精心整理-第
3、 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_
4、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 页 -如果是循环链表?(5)有一个链表 L,其每个节点有 2 个指针,一个指针next 指向链表的下个节点,另一个 random 随机指向链表中的任一个节点,可能是自己或者为空,写一个程序,要求复制这个链表的结构并分析其复杂性。这个题目的思路很巧妙。当然简单的方法,可以利用一个map 或者 hash,将链表的 random 指针的指向,保存起来。这样有O(n)存储空间的浪费,时间基本可以接近 O(n).实际上可以这样来做:我们将新的链表节点,插入到原来链表节点当中,并且修改原来的链表的 random 指针,使得该指针由我们现在的新节点所有。实际上形成下面这样一种结构,同时将原来 o 的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年面试题目链表专题-数据结构与算法-tchlinux 2022 面试 题目 专题 数据结构 算法 tchlinux
限制150内