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

2021-08-20 02:36:06 字數 941 閱讀 8235

解決這個問題其實有很多種思路,例如:

第一種:使用遞迴配合回溯即刻實現。

第二種:利用棧的特性,將鍊錶迴圈遍歷放入棧中,棧頂是鍊錶的尾結點,然後出棧依次列印就可從尾到頭列印鍊錶。

第四種:把鍊錶中連線結點的指標反轉過來,改變鍊錶的方向,再從頭都尾列印即可。

解決方法很多種,我們在這裡給出第一二種的具體實現步驟。

struct listnode ;

struct linkstack ;

struct listnode * creatlistnode(int count)

return p;

}

第一種方式

void initstack (struct linkstack *s)

s->ptop = s->pbase;

s->stacksize = 100;

}void displaystack (struct listnode *phead,struct linkstack *links)

while (links->pbase != links->ptop)

}//第二種方式

void displayrecursion(struct listnode * phead)

struct listnode * p = phead->m_pnext;

displayrecursion(p);

printf("%d",phead->m_nvalue);

}int main(int argc, const char * argv)

return 0;

}

插入一下棧溢位的問題,值得思考:

inta = 10000000;

void test()

a--;

test();

}

劍指offer 5 從尾到頭列印單鏈表

從尾到頭列印單鏈表 ps 如果題設不要求不能改變鍊錶結構時,可以使用單鏈表的逆置 之前已經寫過 單鏈表的逆置改變了鍊錶的方向,嚴格要求時不能這樣寫。解1 遞迴求解 從尾到頭列印單鏈表 遞迴實現 解2 非遞迴實現 利用棧的特性 先進的後出 listnode printlist listnode phe...

劍指Offer 從尾到頭列印鍊錶

題目1511 從尾到頭列印鍊錶 時間限制 1 秒 記憶體限制 128 兆 特殊判題 否 提交 1082 解決 350 題目描述 輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。輸入 每個輸入檔案僅包含一組測試樣例。每一組測試案例包含多行,每行乙個大於0的整數,代表乙個鍊錶的節點。第一行是鍊錶第乙個節點的...

劍指offer 從尾到頭列印鍊錶

輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。輸入描述 輸入為鍊錶的表頭 輸出描述 輸出為需要列印的 新鍊錶 的表頭 分析 題目本意是用的棧結構的先入後出,但是有了容器類的高階方法之後,使用棧的意義就不大了。c struct listnode class solution listnode p hea...