欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++實現(xiàn)單鏈表按k值重新排序的方法

 更新時間:2017年05月08日 11:55:58   作者:難免有錯_  
這篇文章主要介紹了C++實現(xiàn)單鏈表按k值重新排序的方法,結(jié)合實例形式分析了C++單鏈表中按照給定值進行判斷與排序的相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了C++實現(xiàn)單鏈表按k值重新排序的方法。分享給大家供大家參考,具體如下:

題目要求:

給定一鏈表頭節(jié)點,節(jié)點值類型是整型。
現(xiàn)給一整數(shù)k,根據(jù)k將鏈表排序為小于k,等于k,大于k的一個鏈表。
對某部分內(nèi)的節(jié)點順序不做要求。

算法思路分析及代碼(C)

思路:將鏈表分為小于k、等于k、大于k的三個鏈表,然后再合并。

鏈表結(jié)點定義:

typedef struct Node
{
  int data;
  struct Node* next;
}node, *pNode;

算法代碼:

pNode sortLinkedList(pNode head, int k)
{
  pNode sHead = NULL;//小頭
  pNode sTail = NULL;//小尾
  pNode eHead = NULL;//等頭
  pNode eTail = NULL;//等尾
  pNode bHead = NULL;//大頭
  pNode bTail = NULL;//大尾
  pNode temp = NULL;
  //拆分鏈表
  while (head != NULL)
  {
    temp = head->next;
    head->next = NULL;
    if (head->data < k)
    {
      if (!sHead){
        sHead = head;
        sTail = head;
      }
      else{
        sTail->next = head;
        sTail = head;
      }
    }
    else if (head->data == k)
    {
      if (!eHead){
        eHead = head;
        eTail = head;
      }
      else{
        eTail->next = head;
        eTail = head;
      }
    }
    else
    {
      if (!bHead){
        bHead = head;
        bTail = head;
      }
      else{
        bTail->next = head;
        bTail = head;
      }
    }
    head = temp;
  }
  //合并鏈表
  if (sTail)
  {
    sTail->next = eHead;
    eTail = (eTail == NULL ? sTail : eTail);
  }
  if (eTail)
  {
    eTail->next = bHead;
  }
  return sHead != NULL ? sHead : (eHead != NULL ? eHead : bHead);
}

希望本文所述對大家C++程序設(shè)計有所幫助。

相關(guān)文章

  • 在C++中反射調(diào)用.NET的方法(一)

    在C++中反射調(diào)用.NET的方法(一)

    為什么要在C++中調(diào)用.NET呢?接下來通過本文給大家介紹在C++中反射調(diào)用.NET的方法(一),需要的朋友參考下吧
    2017-02-02
  • 快速入門的一些C\C++書籍

    快速入門的一些C\C++書籍

    這篇文章為大家精心推薦了一些快速入門的一些C\C++書籍,希望大家可以喜歡,對這門語言可以產(chǎn)生興趣,需要的朋友可以參考下
    2015-12-12
  • C++常用字符串函數(shù)大全(2)

    C++常用字符串函數(shù)大全(2)

    這篇文章主要給大家分享的是C++常用字符串函數(shù)的大全,cstring.h庫即C語言中的string.h庫,它是C語言中為字符串提供的標(biāo)準(zhǔn)庫。C++對此進行了兼容,所以我們在C++當(dāng)中一樣可以使用,下面文章的詳細內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • 使用C++一步步實現(xiàn)俄羅斯方塊

    使用C++一步步實現(xiàn)俄羅斯方塊

    本文給大家分享的是作者在使用C++制作俄羅斯方塊的時候的思路分析以及開發(fā)準(zhǔn)備和實驗原理,都是些基礎(chǔ)的知識儲備,希望大家能夠喜歡,具體的代碼我們下一節(jié)再分享給大家
    2017-12-12
  • C++類結(jié)構(gòu)體與json相互轉(zhuǎn)換

    C++類結(jié)構(gòu)體與json相互轉(zhuǎn)換

    這篇文章主要介紹的是C++類結(jié)構(gòu)體與json相互轉(zhuǎn)換,json字符串一般使用的是開源的類庫Newtonsoft.Json,方法十分簡潔,下面就隨小編一起看下面文章內(nèi)容吧
    2021-09-09
  • C++編程中的命名空間基本知識講解

    C++編程中的命名空間基本知識講解

    這篇文章主要介紹了C++編程中的命名空間基本知識講解,包括對C++11中內(nèi)聯(lián)命名空間新特性的介紹,需要的朋友可以參考下
    2016-01-01
  • 利用Matlab繪制地圖的超詳細教程

    利用Matlab繪制地圖的超詳細教程

    worldmap和usamap是axesm的子類,worldmap是用于生成世界地圖坐標(biāo)區(qū)域,usamap用于生成美國地圖坐標(biāo)區(qū)域。本文將詳細為大家介紹如何利用這兩個函數(shù)繪制地圖,需要的可以參考一下
    2022-02-02
  • C語言模擬實現(xiàn)掃雷游戲

    C語言模擬實現(xiàn)掃雷游戲

    這篇文章主要為大家詳細介紹了C語言模擬實現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • C++中基類和派生類之間的轉(zhuǎn)換實例教程

    C++中基類和派生類之間的轉(zhuǎn)換實例教程

    這篇文章主要介紹了C++中基類和派生類之間的轉(zhuǎn)換,有助于深入理解C++面向?qū)ο蟪绦蛟O(shè)計,需要的朋友可以參考下
    2014-08-08
  • 詳解C++異常處理(try catch throw)完全攻略

    詳解C++異常處理(try catch throw)完全攻略

    這篇文章主要介紹了詳解C++異常處理(try catch throw)完全攻略,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評論