首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。链表结点定义如下: { int m_nKey; ListNode* m_pNext; };
输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。链表结点定义如下: { int m_nKey; ListNode* m_pNext; };
admin
2019-03-29
140
问题
输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。链表结点定义如下:
{
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
程序员面试
相关试题推荐
InEnglish,thewordforthesniffingappendageonourfaceisnose.Japanesealsohappenstousetheconsonantninthisword(
UDP连接和TCP连接的异同。
利用“开始”菜单“所有程序”启动“计算器”应用程序。
在Word97的编辑状态,执行“文件”菜单中的“保存”命令后()。A.将所有打开的文档存盘B.只能将当前文档存储在原文件夹的文件内C.可以将当前文档存储在已有的任意文件夹内D.可以先建立一个新文件夹,再将文档存储在该文件夹内
关于在网页中加入书签来实现跳转的说法,正确的是______。A.可以实现页面间的跳转B.可以实现同一页面中不同位置的跳转C.在页面编辑时,需要使用“Insert”中的“NamedAnchor”D.只能跳转到其它页面的页首
Office2000Office2000中文版中文版用()实现A.插入符号B.并排字符C.组合字符D.首字下沉
对于PPoint中的视图模式,以下说法错误的是()。A.幻灯片浏览视图下不能设置放映方式B.幻灯片视图注重于对幻灯片的文本和对象进行详细操作C.每种视图模式在演示文稿的制作和显示中有不同的作用D.大纲视图便于查看和编排演示文稿的大纲
关于计算机语言的描述,不正确的是()。A.机器语言的语句全部由0和1组成,指令代码短,执行速度快B.机器语言因为是面向机器的低级语言,所以执行速度慢C.汇编语言已将机器语言符号化,所以它与机器无关D.汇编语言比机器语言执行速度快
请根据设计模板创建演示文稿,命名为“总结”,保存在D盘根目录下。
工作表某两列分别存放北京和沈阳各月的销售情况,请依次按照“北京”及“沈阳”的顺序,对销售情况由低至高进行排序。
随机试题
我国与卫生标准配套的检测检验方法,有国家标准和卫生行业标准。下列标准号中,属于国家标准的是
已知数字信号A和数字信号B的波形如图所示,则数字信号的波形图为()。
属于建设工程项目组织风险的是()。
在圆弧顶或圆弧底形态形成过程中,成交量的变化都是两头少,中间多。( )
根据《证券发行与承销管理办法》的规定,新股资金申购网上发行与网下配售股票不能同时进行。()
桑代克根据其实验提出的主要学习定律有()。
人们的思想、动机和目的实现程度,取决于它们()。
简述教师运用谈话法应遵循的基本要求。
正当理由是一般侵权民事责任的抗辩事由之一,包括()。
根据下列资料,回答问题。据统计,2016年共有来自205个国家和地区的442773名各类外国留学人员在31个省、自治区、直辖市的829所高等学校、科研院所和其他教学机构中学习,比2015年增加45138人。1.按洲别统计2.按国别排序前
最新回复
(
0
)