一、題目
輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值。
二、關鍵
「後進先出」的例子,因此可以使用棧、遞迴來實現功能。
三、解釋
四、其他方法
把鍊錶中的指標反轉過來。(使用兩個指標,p1和p2,p1的初始值是表頭,p2的初始值是p1->next,只要p2!=null,那麼就進行p1->next=p2->next,p2->next=p1)
五、**
詢問是否可以改變鍊錶的結構,不可以則能夠使用本程式中思想
#include "..\utilities\list.h"
#include void printlistreversingly_iteratively(listnode* phead) //方法一:棧
while(!nodes.empty())
}void printlistreversingly_recursively(listnode* phead) //方法二:遞迴
printf("%d\t", phead->m_nvalue);
}}// ********************測試**********************
void test(listnode* phead)
// 1->2->3->4->5
void test1()
// 只有乙個結點的鍊錶: 1
void test2()
// 空鍊錶
void test3()
int main(int argc, char* argv)
面試題6 從尾到頭列印鍊錶
輸入乙個鍊錶的頭節點,從尾到頭反過來列印出每個節點的值。鍊錶節點定義如下 struct listnode 從尾到頭列印,能否改變原來的鍊錶?是否允許修改輸入資料 1.能改變原來的鍊錶,將鍊錶的指標反過來。2.使用棧 遞迴 插入節點 在鍊錶的尾端插入乙個節點 若煉表為空,則頭指標的值會改變 所以要使用...
面試題6 從尾到頭列印鍊錶
輸入乙個鍊錶,按鍊錶從尾到頭的順序返回乙個arraylist。占用記憶體 9572k public arraylist printlistfromtailtohead02 listnode listnode stack stack newstack listnode p listnode while...
面試題6 從尾到頭列印鍊錶
題目 輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值 思路 逆向輸出,如果不改變鍊錶的結構,可借助棧實現該功能,因為棧有 先進後出 的特點。include include using namespace std typedef struct listnode listnode 在末尾增加乙個...