最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C/C++ 雙鏈表之逆序的實例詳解

 更新時間:2017年07月04日 17:19:48   投稿:lqh  
這篇文章主要介紹了C/C++ 雙鏈表之逆序的實例詳解的相關資料,需要的朋友可以參考下

C/C++ 雙鏈表之逆序的實例詳解

一、結點結構

        雙向鏈表的數(shù)據(jù)結構定義如下:      

 typedef struct node
    {
      ElemType data;
      struct node *prior
      struct node *next;
    }list;

        其中,ElemType可以是任意數(shù)據(jù)類型如int、float或者char等,在算法中,規(guī)定其默認為int類型。

二、帶頭結點

        本文描述的是雙向鏈表逆序,鏈表逆序需要維護3個指針,分別指向前一個節(jié)點、當前節(jié)點和下一個節(jié)點,具體代碼如下:

 list *reverselist(list *head)
    {
      if ((NULL == head) || (NULL == head->next))
      {
        return head;
      }
      list *p1=head->next, *p2=p1->next, *p3=NULL;
      p1->next = NULL;
      while (p2)
      {
        p3 = p2->next;      // 保存當前結點的下一結點
        p2->next = p1;      // 改變當前結點的next域,指向它的前一個結點
        p1->prior = p2;     // 改變前一個結點的prior域,指向它的后一個結點
        p1 = p2;         // 指針移到下一個結點
        p2 = p3;
      }
      head->next = p1;       // 恢復頭結點
      p1->prior = head;
      return head;
    }

        在鏈表逆序過程中,非常重要的一點是要防止斷鏈問題,因此,在移動指針逆序某個結點時,需要用一個指針指向該結點的下一結點,防止下一結點丟失。

三、不帶頭結點

 list *reverselist(list *head)
    {
      if ((NULL == head) || (NULL == head->next))
      {
        return head;
      }
      list *p1=head, *p2=p1->next, *p3=NULL;
      p1->next = NULL;
      while (p2)
      {
        p3 = p2->next;
        p2->next = p1;
        p1->prior = p2;
        p1 = p2;
        p2 = p3;
      }
      head = p1;
      return head;
    }

        不帶頭結點的鏈表逆序與帶頭結點的區(qū)別在于紅色部分代碼,即初始p1指向的是第一個結點而不是頭結點,最后head直接指向p1而不是用其next來指向p1。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • QT中進程的創(chuàng)建實現(xiàn)

    QT中進程的創(chuàng)建實現(xiàn)

    本文主要介紹了QT中進程的創(chuàng)建實現(xiàn),詳細介紹了創(chuàng)建進程的整個過程,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-08-08
  • C++vector的insert函數(shù)用法小結

    C++vector的insert函數(shù)用法小結

    std::vector::insert是C++中用于在指定位置插入元素的函數(shù),支持插入單個元素、多個相同元素、一個范圍的元素或初始化列表中的元素,插入操作可能會使插入點之后的迭代器失效,并且時間復雜度為O(n),本文介紹C++vector的insert函數(shù)用法小結,感興趣的朋友一起看看吧
    2025-03-03
  • C++虛函數(shù)表與類的內存分布深入分析理解

    C++虛函數(shù)表與類的內存分布深入分析理解

    對C++ 了解的人都應該知道虛函數(shù)(Virtual Function)是通過一張?zhí)摵瘮?shù)表(Virtual Table)來實現(xiàn)的。簡稱為V-Table。本文就將詳細講講虛函數(shù)表的原理與使用,需要的可以參考一下
    2022-08-08
  • C語言從編譯到運行過程詳解

    C語言從編譯到運行過程詳解

    這篇文章主要介紹了C語言從編譯到運行的一個過程的相關資料,需要的朋友可以參考下面文章具體的內容
    2021-09-09
  • C++標準模板庫map的常用操作

    C++標準模板庫map的常用操作

    今天小編就為大家分享一篇關于C++標準模板庫map的常用操作,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 對C++ string append方法的常用用法詳解

    對C++ string append方法的常用用法詳解

    今天小編就為大家分享一篇對C++ string append方法的常用用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • C語言折半查找法介紹及使用示例

    C語言折半查找法介紹及使用示例

    折半查找法也叫做?分查找,顧名思義就是把數(shù)據(jù)分成兩半,再判斷所查找的key在哪?半中,再重復上述步驟知道找到?標key,下面這篇文章主要給大家介紹了關于C語言折半查找法的相關資料,需要的朋友可以參考下
    2022-08-08
  • C++如何實現(xiàn)簡易掃雷游戲

    C++如何實現(xiàn)簡易掃雷游戲

    這篇文章主要為大家詳細介紹了C++如何實現(xiàn)簡易掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • c++網(wǎng)絡編程下Linux的epoll技術和Windows下的IOCP模型

    c++網(wǎng)絡編程下Linux的epoll技術和Windows下的IOCP模型

    c++ 網(wǎng)絡編程LINUX-epoll/windows-IOCP下socket opoll函數(shù)用法 優(yōu)于select方法的epoll 以及windows下IOCP 解決多進程服務端創(chuàng)建進程資源浪費問題,感興趣的小伙伴一起來學習吧
    2021-08-08
  • QT?UDP網(wǎng)絡編程實現(xiàn)簡單消息傳輸

    QT?UDP網(wǎng)絡編程實現(xiàn)簡單消息傳輸

    這篇文章主要為大家詳細介紹了QT?UDP網(wǎng)絡編程實現(xiàn)簡單消息傳輸,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評論

张家港市| 广丰县| 德保县| 镇雄县| 左云县| 南澳县| 安新县| 嘉义县| 漳浦县| 兰西县| 辽源市| 鲜城| 桓台县| 长岛县| 临安市| 客服| 刚察县| 长沙市| 剑川县| 清涧县| 信宜市| 云浮市| 汕尾市| 固始县| 昌乐县| 且末县| 青阳县| 错那县| 奉贤区| 云南省| 自贡市| 贡山| 尉犁县| 鄂尔多斯市| 东明县| 清流县| 若尔盖县| 普陀区| 莱阳市| 凤山县| 武乡县|