輸入乙個鍊錶的頭結點,從尾到頭反過來列印每個結點的值。
鍊錶結點定義:
struct listnode;
1、改變鍊錶結構的話,先反轉鍊錶,然後從頭到尾列印每個結點的值。(後續博文會有相關實現,這裡就暫不實現)
2、無需改變鍊錶結構,使用棧,遍歷整個鍊錶,將結點依次入棧,然後再依次出棧,實現「後進先出」。
3、無需改變鍊錶結構,遞迴實現,如果鍊錶結點數過多的話,可能會導致棧溢位。
void printlistreversingly_iteratively(listnode* phead)
while(!nodes.empty())
coutcout}void printlistreversingly_recursively_2(listnode* phead)
}
ac**:
/**
* struct listnode
* };
*/class solution
return;
}vectorprintlistfromtailtohead(struct listnode* head)
};
/**
* struct listnode
* };
*/class solution
reverse(nodes.begin(),nodes.end());
return nodes;
}};
從尾到頭列印單鏈表(劍指offer面試題5)
題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值。分析 此題考察單鏈表的理解和應用,為了實現列印,必須先建立乙個單鏈表,頭結點可有可無,但有頭結點和無頭結點在程式設計上是應該注意的,反向列印思路不一樣,這裡以包含頭結點舉例分析,單鏈表以尾部插入方式建立,頭結點資料域為空,頭結點指標指向下...
劍指Offer 面試題5 從尾到頭列印鍊錶
題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印每個節點的值.分析1 通常,列印是乙個唯讀操作,我們不希望列印的同時去修改原資料的內容.故我們不能改變鍊錶的結構.解決這個問題肯定是需要遍歷鍊錶的,但是遍歷的順序是從頭到尾的,可輸出的順序確實從尾到頭,也就是說第乙個遍歷到的節點最後乙個輸出,最後乙個遍歷...
劍指offer 面試題5 從尾到頭列印鍊錶
題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值。public void invertedlist1 listnode head listnode p head stack integer stack new stack integer while p null while stack ...