首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。链表结点定义如下: { int m_nKey; ListNode* m_pNext; };
输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。链表结点定义如下: { int m_nKey; ListNode* m_pNext; };
admin
2019-03-29
84
问题
输入一个链表的头结点,反转该链表,并返回反转后链表的头结点。链表结点定义如下:
{
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://jikaoti.com/ti/Fag7FFFM
0
程序员面试
相关试题推荐
WhenIseeclients,thisisthequestionthatI’maskedthemost.Ifyou’reinapublicplace,lookaround.【F1】Nearlyeveryone
Americanschoolsaren’texactlyfrozenintime,butconsideringthepaceofchangeinotherareasoflife,ourpublicschoolste
YouhavereceivedaletterfromSophia.Sheexpressedheradmirationformicro-bloggingandwonderedwhetheritcanreplacebook
TheMagicofSoundMusicisoneofthemostbeautifulformsofartisticexpressionseverinvented.Inmoviesandplays,musi
Directions:Inthissection,youareaskedtowriteanessaybasedonthefollowinginformation.Makecommentsandexpressy
Writeanessaybasedonthefollowingoutline.Youshouldwriteabout150wordsontheANSWERSHEET.1.教师用课外时间给学生补课赚钱的现象
ASP.NET能在那些系统中运行?
将新浪新闻中心网页存放到收藏夹的“新闻”子文件夹中。
将C盘“职称考试”文件夹中的“试题.XLS”的属性设置为只读。
加强网络道德建设,有利于加快信息安全立法的进程。
随机试题
某疟疾患者突发畏冷寒战,体温升高至39℃,其原因是()。
阅读韩愈《张中丞传后叙》中的一段文字,然后回答下列小题。说者又谓远与巡分城而守,城之陷,自远所分始。以此诟远。此又与儿童之见无异。人之将死,其脏腑必有先受其病者;引绳而绝之,其绝必有处。观者见其然,从而尤之,其亦不达于理矣!小人之好议论,不乐成人
CK-BB主要存在于
根据公司法律制度的规定,上市公司的下列事项中,必须由股东大会以特别决议通过的是()。
根据《国务院关于全面建立临时救助制度的通知》,关于临时救助申请受理审核审批程序的说法。正确的有()。
创造性思维的核心是辐合思维。()
目前,中央在城市中清理各种歧视农民工的法律和法规,维护进城农民工的合法权益。这主要体现了()。
C是线段AB上一点,D是线段CB的中点,已知图中所有线段的长度之和为23,线段AC和线段CB的长度都是正整数,那么线段AC的长度为:
2005年4月20日至4月28日,国家主席胡锦涛对文莱、印度尼西亚和菲律宾进行国事访问并出席在印尼举行的2005年亚非峰会和万隆会议50周年纪念活动。其间,胡锦涛全面阐述了中国愿携手亚非国家共同发展的明确立场,即
A、ManagingDirectorisaccountabletotheBoard.B、ManagementServicesDepartmentisledbyMr.Bruce.C、RegionalManagersarer
最新回复
(
0
)