我在上一篇博客中《C語言實現雙向非循環鏈表》實現了如何構造一個雙向非循環鏈表,並實現了正向打印。我還在之前一篇博客《C語言實現單鏈表的逆序打印》中實現了單鏈表的逆序打印。這篇博客我們來實現對雙向非循環鏈表進行逆序打印,實現起來非常的簡單。代碼已經上傳至 https://github.com/chenyufeng1991/ReverseDoubleLinkedList。
核心代碼如下:
//打印非循環雙向鏈表,這個其實是正向打印 void printList(Node *pNode){ if (pNode == NULL) { printf("%s函數執行,鏈表為空,打印失敗\n",__FUNCTION__); }else{ while (pNode != NULL) { printf("%d ",pNode->element); pNode = pNode->next; } printf("\n"); } }
//逆序打印雙向非循環鏈表 void ReversePrintList(Node *pNode){ Node *pMove; pMove = pNode; if (pNode == NULL) { printf("%s函數執行,雙向非循環鏈表為空,逆序打印失敗\n",__FUNCTION__); }else{ //從前往後遍歷到最後一個節點 while (pMove->next != NULL) { pMove = pMove->next; } //從後往前遍歷到第一個節點,同時打印節點值 while (pMove != NULL) { printf("%d ",pMove->element); pMove = pMove->prior; } printf("\n%s函數執行,雙向非循環鏈表逆序打印成功\n",__FUNCTION__); } }通過仔細研究代碼可以發現,想要逆序一個鏈表,使用雙向鏈表比使用單鏈表簡單地多。