程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言入門知識 >> C語言實現雙向非循環鏈表(不帶頭結點)的逆序打印

C語言實現雙向非循環鏈表(不帶頭結點)的逆序打印

編輯:C語言入門知識

我在上一篇博客中《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__);
    }
}
通過仔細研究代碼可以發現,想要逆序一個鏈表,使用雙向鏈表比使用單鏈表簡單地多。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved