劍指offer 面試題5 鍊錶 從尾到頭列印鍊錶

2021-07-27 19:56:37 字數 987 閱讀 6268

首先,我們複習一下鍊錶的一些基本知識點:

1.建立

2.插入

3.刪除

struct listnode

;//往煉表中插入乙個結點

void addtotail(listnode** phead, int value)//傳入二級指標,是因為可能修改頭指標,一級指標只能修改形參

else

pcur->m_pnext = pnew;

}}

在鍊錶中找到第乙個含某值的結點並刪除該結點

void removenode(listnode** phead,int value)//刪除結點一定要注意空間的釋放

listnode* ptodeleted =

null;

if ((*phead)->m_nvalue == value)

else

//刪除找到的結點

if ((pnode->m_pnext !=

null) && (pnode->m_pnext->m_nvalue = value))

}if (ptodeleted !=

null)

}

面試題5:從尾到頭列印鍊錶
//輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值

//思路:遍歷的順序是從頭到尾遍歷,可輸出的順序卻是從尾到頭,也就是說第乙個遍歷的結點最後乙個輸出,最後乙個遍歷的結點卻第乙個輸出

//這是典型的先入後出的方式,我們可以用棧來實現這種順序,每經過乙個結點的時候,把該節點放到乙個棧中,當遍歷完整個鍊錶後,再從棧頂開始輸出每個結點的值,這是順出的順序就實現了反轉

void printlistreverseingly_iteratively(listnode* phead)

//出棧

while (!nodes.empty())

}

劍指Offer 面試題5 從尾到頭列印鍊錶

題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印每個節點的值.分析1 通常,列印是乙個唯讀操作,我們不希望列印的同時去修改原資料的內容.故我們不能改變鍊錶的結構.解決這個問題肯定是需要遍歷鍊錶的,但是遍歷的順序是從頭到尾的,可輸出的順序確實從尾到頭,也就是說第乙個遍歷到的節點最後乙個輸出,最後乙個遍歷...

劍指offer 面試題5 從尾到頭列印鍊錶

題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值。public void invertedlist1 listnode head listnode p head stack integer stack new stack integer while p null while stack ...

劍指offer 面試題5 從尾到頭列印鍊錶

題目描述 輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。考慮用棧實現,如下 從尾到頭輸出鍊錶 棧,後進先出 include include include include includeusing namespace std struct listnode 尾部插入法插入節點 void add2tai...