首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下: struct ListNode { int m_nKey; ListNode* m_pNext; };
输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下: struct ListNode { int m_nKey; ListNode* m_pNext; };
admin
2019-03-29
92
问题
输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
选项
答案
/////////////////////////////////////////////////////////////////////// // Print a list from end to beginning // Input: pListHead - the head of list /////////////////////////////////////////////////////////////////////// void PrintListReversely(ListNode* pListHead) { if(pListHead != NULL) { // Print the next node first if (pListHead->m_pNext != NULL) { PrintListReversely(pListHead->m_pNext); } // Print this node printf("%d", pListHead->m_nKey); } }
解析
这是一道很有意思的面试题。该题以及它的变体经常出现在各大公司的面试、笔试题中。
看到这道题后,第一反应是从头到尾输出比较简单。于是很自然地想到把链表中链接结点的指针反转过来,改变链表的方向。然后就可以从头到尾输出了。反转链表的算法详见本人面试题精选系列的第19题,在此不再细述。但该方法需要额外的操作,应该还有更好的方法。
接下来的想法是从头到尾遍历链表,每经过一个结点的时候,把该结点放到一个栈中。当遍历完整个链表后,再从栈顶开始输出结点的值,此时输出的结点的顺序已经反转过来了。该方法需要维护一个额外的栈,实现起来比较麻烦。
既然想到了栈来实现这个函数,而递归本质上就是一个栈结构。于是很自然的又想到了用递归来实现。要实现反过来输出链表,我们每访问到一个结点的时候,先递归输出它后面的结点,再输出该结点自身,这样链表的输出结果就反过来了。
转载请注明原文地址:https://jikaoti.com/ti/Vfg7FFFM
0
程序员面试
相关试题推荐
YourfriendDavidjustsentyouabookthatyouexpectedasabirthdaypresent.Sendane-mailtohimtoexpressyourappreciati
Americanschoolsaren’texactlyfrozenintime,butconsideringthepaceofchangeinotherareasoflife,ourpublicschoolste
Inthissection,youareaskedtowriteanessaybasedonthefollowinginformation.Makecommentsandexpressyourownopinion.
Inthissection,youareaskedtowriteanessaybasedonthefollowinginformation.Makecommentsandexpressyourownopinion.
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“Iamastudent.”,则输出“student.aamI”。
bob的电子邮件转发到wanglong@sina.com。
随着网络信息技术的进步和社会信息化程度的不断提高,一个由庞大的网络产业带动,并导致整个经济社会产生巨大变革的数字经济时代已经离我们越来越近。目前,“数字化校园”、“数字企业”、“数字城市”等一系列项目快速上马,在这些项目中,信息的数字化与数字信息的网络传输
对计算机评价的主要性能指标有时钟频率、①、运算精度、内存容量等。对数据库管理系统评价的主要性能指标有②、数据库所允许的索引数量、最大并发事务处理能力等。②处应填入?
在数据库系统中,“事务”是访问数据库并可能更新各种数据项的一个程序执行单元。为了保证数据完整性,要求数据库系统维护事务的原子性、一致性、隔离性和持久性。针对事务的这4种特性,考虑以下的架构设计场景:假设在某一个时刻只有一个活动的事务,为了保证事务
随机试题
患者,女性,19岁。自幼发现心脏杂音,心脏听诊于胸骨左缘第2肋间可闻及3/6级收缩期杂音,肺动脉瓣区第二心音亢进。下一步明确诊断可选择的检查方法是
下列药物中属于抗心律失常的药物有
A.执业药师或者其他依法经资格认定的药学技术人员 B.从业药师或者其他依法经资格认定的药学技术人员 C.主任药师或者其他依法经资格认定的药学技术人员 D.主管药师或者其他依法经资格认定的药学技术人员 E.依法经资格认定的药学技术人员经营甲类非处
在新分泌的牙釉质基质中,有机成分为主,矿物盐仅占总量的
在信息交换的基本原则中,项目信息的分类体系应能满足不同项目参与方高效信息交换的需要,这体现了()原则。
资本市场所流通的金融工具的期限一般为()。
小周的丈夫张某是现役军人,两人结婚多年。现小周提出离婚。根据《婚姻法》,下列关于小周提出离婚要求的说法中,正确的是()。[2010年真题]
①2007年12月31日,国家有关部门正式发布通知:从2008年6月1日起,在全国范围内禁止生产、销售、使用厚度小于0.025毫米的塑料购物袋。该举措的主要试验点为超市、集市以及农贸市场等消费集中地。“限塑令”实施的主要手段是购物袋收费,消费者对此褒贬
Nowanewhigh-rateextensiontothestandard,802.11b,lets(1)networkssupportdataratesto11Mbit/see.Ratifiedin1997,the-o
下列给定程序中函数fun的功能是:将tt所指字符串中的小写字母全部改为对应的大写字母,其他字符不变。例如,若输入“Ab,cD”,则输出“AB,CD”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序
最新回复
(
0
)