面試題6 從尾到頭列印鍊錶

2021-08-29 01:53:33 字數 814 閱讀 4114

一、題目

輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值。

二、關鍵

「後進先出」的例子,因此可以使用棧、遞迴來實現功能。

三、解釋

四、其他方法

把鍊錶中的指標反轉過來。(使用兩個指標,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 在末尾增加乙個...