題目描述:輸入一個鏈表的頭結(jié)點,從尾到頭反過來打印出每個節(jié)點的值
創(chuàng)新互聯(lián)建站成立于2013年,我們提供高端成都網(wǎng)站建設(shè)公司、重慶網(wǎng)站制作、成都網(wǎng)站設(shè)計公司、網(wǎng)站定制、全網(wǎng)營銷推廣、小程序開發(fā)、微信公眾號開發(fā)、營銷推廣服務(wù),提供專業(yè)營銷思路、內(nèi)容策劃、視覺設(shè)計、程序開發(fā)來完成項目落地,為三維植被網(wǎng)企業(yè)提供源源不斷的流量和訂單咨詢。鏈表的節(jié)點定義如下:
struct ListNode { int m_nValue; ListNode* m_pNext; };
分析:
一般情況下,遇到這種問題,首先應(yīng)該問清楚面試官是否可以改變原有的鏈表結(jié)構(gòu),自己再做分析。
void PrintListReversingly_Iteratively(ListNode* pHead) { std::stacknodes; ListNode* pNode = pHead; while(pNode != NULL) { nodes.push(pNode); pNode = pNode->m_pNext; } while(!nodes.empty()) { pNode = nodes.top(); printf("%d\t", pNode->m_nValue); nodes.pop(); } }
void PrintListReversingly_Recursively(ListNode* pHead) { if(pHead != NULL) { if (pHead->m_pNext != NULL) { PrintListReversingly_Recursively(pHead->m_pNext); } printf("%d\t", pHead->m_nValue); } }
說明:用遞歸的代碼看起來很簡潔,但是如果一個鏈表非常長,于是遞歸調(diào)用的深度越深,就有可能導(dǎo)致棧溢出,因此利用循環(huán)實現(xiàn)的代碼的魯棒性(健壯性)會更好些。
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。