從尾到頭列印單鏈表 C 實現

2021-10-04 16:54:01 字數 1064 閱讀 8707

題目:輸入乙個鍊錶的頭結點,從尾到頭反過來列印出每個結點的值。
解法1:利用棧實現

廢話不多說,直接上**:

void solution::printlistrevers(listnode *phead)

while (!s_nodes.empty())

return;

}

解法2:遞迴實現

需要注意,當鍊表非常長時,就會導致函式掉用的層級很深,有可能棧溢位;所以解法1較好。

void listnoderecursion(listnode *phead)

return;

}void solution::printlistreversrecursion(listnode *phead)

完整**
#include "string.h"

#include "stdio.h"

#include #include using namespace std;

struct listnode

;class solution

;solution::solution()

{}solution::~solution()

listnode* solution::initlist_head(int n)

return phead;

}listnode* solution::initlist_tail(int n)

return phead;

}void solution::printlistrevers(listnode *phead)

while (!s_nodes.empty())

return;

}void listnoderecursion(listnode *phead)

return;

}void solution::printlistreversrecursion(listnode *phead)

int main()

從尾到頭列印單鏈表

由於單鏈表只能從按單個方向訪問下乙個節點,而不能訪問前乙個節點。首先,解決這個問題肯定要遍歷鍊錶。遍歷的順序是從頭到尾的順序,可輸出的順序卻是從尾到頭。也就是說第乙個遍歷到的結點最後乙個輸出,而最後乙個遍歷到得結點第乙個輸出。這就是典型的 後進先出 可以用 棧實現這種順序。實現程式過程 每經過乙個結...

從尾到頭列印單鏈表

include using namespace std include includetypedef struct node 節點結構 node node create 尾插法建立單鏈表 else q p p node malloc sizeof node p next null if flag 0...

從尾到頭列印單鏈表

可運用兩種方法列印 方法一 迴圈演算法 方法二 遞迴壓棧呼叫 方法一 先呼叫我們已經寫好的煉表頭檔案list.h鍊錶構造方面不過多說明。void printreverse listnode first 要列印的結點 printf d cur data end cur 1.通過cur next end...