从尾到头打印单链表
題目:從尾到頭打印鏈表。輸入一個(gè)單鏈表的頭結(jié)點(diǎn),從尾到頭反過來打印出每個(gè)結(jié)點(diǎn)的值。鏈表結(jié)點(diǎn)定義如下:
struct?ListNode{int?m_nValue;ListNode*?m_pNext; };分析:考慮棧操作的類似性,可以建立堆棧然后輸出。實(shí)現(xiàn)代碼如下:
既然想到用堆棧,就可以想到遞歸在本質(zhì)上也是堆棧結(jié)構(gòu),于是我們可以用遞歸來實(shí)現(xiàn)。要實(shí)現(xiàn)反過來輸出鏈表,我們每訪問到一個(gè)節(jié)點(diǎn)的時(shí)候,先遞歸輸出她后面的結(jié)點(diǎn),在輸出該節(jié)點(diǎn)自身就可以了。實(shí)現(xiàn)代碼如下:
void?PrintListReversingly_Recursively(ListNode*?pHead){if(pHead!=NULL){if(pHead->m_pNext!=NULL){PrintListReversingly_Recursingly(pHead->m_pNext);}printf("%d\t",pHead->m_nValue);} }遞歸的方法有個(gè)問題:當(dāng)鏈表非常長(zhǎng)時(shí),就會(huì)導(dǎo)致函數(shù)調(diào)用的層級(jí)很深,從而有可能導(dǎo)致函數(shù)調(diào)用的棧溢出。顯式的?;谘h(huán)實(shí)現(xiàn)的代碼的魯棒性要好一些。
轉(zhuǎn)載于:https://blog.51cto.com/secondscript/1581618
總結(jié)
- 上一篇: 正则表达式支持情况
- 下一篇: Linux终端乱码的解决办法