首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。链表结点定义如下: { int m_nKey; ListNode* m_pNext; };
输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。链表结点定义如下: { int m_nKey; ListNode* m_pNext; };
admin
2019-03-29
110
问题
输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。链表结点定义如下:
{
int m_nKey;
ListNode* m_pNext;
};
选项
答案
/////////////////////////////////////////////////////////////////////// // Reverse a list iteratively // Input: pHead - the head of the original list // Output: the head of the reversed head /////////////////////////////////////////////////////////////////////// ListNode* ReverseIteratively(ListNode* pHead) { ListNode* pReversedHead = NULL; ListNode* pNode = pHead; ListNode* pPrev = NULL; while(pNode != NULL) { // get the next node, and save it at pNext ListNode* pNext = pNode->m_pNext; // if the next node is null, the currect is the end of original // list, and it’s the head of the reversed list if(pNext == NULL) pReversedHead = pNode; // reverse the linkage between nodes pNode->m_pNext = pPrev; // move forward on the the list pPrev = pNode; pNode = pNext; } return pReversedHead; }
解析
这是一道广为流传的微软面试题。由于这道题能够很好的反应出程序员思维是否严密,在微软之后已经有很多公司在面试时采用了这道题。
为了正确地反转一个链表,需要调整指针的指向。与指针操作相关代码总是容易出错的,因此最好在动手写程序之前作全面的分析。在面试的时候不急于动手而是一开始做仔细的分析和设计,将会给面试官留下很好的印象,因为在实际的软件开发中,设计的时间总是比写代码的时间长。与其很快地写出一段漏洞百出的代码,远不如用较多的时间写出一段健壮的代码。
为了将调整指针这个复杂的过程分析清楚,我们可以借助图形来直观地分析。假设下图中l、m和n是三个相邻的结点:
a?b?…?l mànà…
假设经过若干操作,我们已经把结点l之前的指针调整完毕,这些结点的m_pNext指针都指向前面一个结点。现在我们遍历到结点m。当然,我们需要把调整结点的m_pNext指针让它指向结点l。但注意一旦调整了指针的指向,链表就断开了,如下图所示:
a?b?…l?m nà…
因为已经没有指针指向结点n,我们没有办法再遍历到结点n了。因此为了避免链表断开,我们需要在调整m的m_pNext之前要把n保存下来。
接下来我们试着找到反转后链表的头结点。不难分析出反转后链表的头结点是原始链表的尾位结点。什么结点是尾结点?就是m_pNext为空指针的结点。
转载请注明原文地址:https://kaotiyun.com/show/7xmZ777K
0
程序员面试
相关试题推荐
"Thecatdoesnotofferservices,"WilliamBurroughswrote."Thecatoffersitself."Butitdoessowithunapologeticcontradict
[A]Theperson-skillsmatchapproachtoselection[B]Theimpactsofbadselectiondecisions[C]Theimportanceofstructu
.net中读写XML的类都归属于哪些命名空间?
设置拨号连接属性使得用户在使用拨号连接时需要使用我的Windows登录名和密码。
分别选中两个文件,并同时删除。
()是计算机系统软件的两个重要特点。A.通用性B.可卸载性C.可扩充性D.基础性
在使用Word过程中,可随时按键盘上的()
软盘写保护的作用是()。A.防止持签B.防止读盘C.防止显示D.防止写盘
对计算机评价的主要性能指标有时钟频率、①、运算精度和内存容量等。对数据库管理系统评价的主要性能指标有②、数据库所允许的索引数量和最大并发事务处理能力等。①处应填入?
简述企业应用集成的内容层次,并比较EAI与ERP,CMM的异同。具体叙述实施企业应用集成的要点,详细论述你在选择企业级应用集成(EAI)解决方案时的考虑,采用技术与方法。
随机试题
设随机事件A与B互不相容,且P(A)>0,P(B)>0,则()
下列选项中,不属于国家“十五”期间规定的水环境污染物总量控制指标的是( )。
丁公司最近参与中东某国水坝建设项目投保,在激烈竞争中最终中标。按照当地法律,丁公司必须与当地企业成立投标联合体方可投标,中标后该投标联合体即转为项目公司负责水坝建设。该国政局相对稳定,但实行外汇管制。按照中标通知书及最终签署合同条款约定,对于前期30%的
以下关于税法与其他法律之间的关系,说法正确的有()。
The______thatBrightStarPrintofferstolong-termemployeeshelpthecompanytoattractthebestproductionworkersinthet
苛勒认为学习是通过下列哪个过程实现的?()
马斯洛需要层次理论中的最高层次需要是()。
张小珍:在我国,90%的人所认识的人中都有失业者,这真是个令人震惊的事实。王大为:我不认为您所说的现象有令人震惊之处。其实,就5%这样可接受的失业率来讲,每20个人中就有1个人失业。在这种情况下,如果一个人所认识的人超过50个,那么,其中就很可能有1个或更
公安机关的任务,是指公安机关在()所确定的管辖范围内,为实现一定的目标而进行的工作内容。
若某二叉树的前序遍历访问顺序是ABDGCEFH,中序遍历访问顺序是DGBAECFH,则其后序遍历的节点访问顺序是______。
最新回复
(
0
)