国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++實現單鏈表按k值重新排序的方法

2020-01-26 14:10:03
字體:
來源:轉載
供稿:網友

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

題目要求:

給定一鏈表頭節點,節點值類型是整型。
現給一整數k,根據k將鏈表排序為小于k,等于k,大于k的一個鏈表。
對某部分內的節點順序不做要求。

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

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

鏈表結點定義:

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++程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 边坝县| 大厂| 上虞市| 施甸县| 东方市| 榆林市| 大名县| 永嘉县| 时尚| 吉木萨尔县| 光山县| 四川省| 景洪市| 星子县| 五大连池市| 泰顺县| 文水县| 深州市| 呼图壁县| 仲巴县| 磐石市| 武宣县| 遵化市| 福鼎市| 蕉岭县| 昭通市| 铜川市| 新营市| 延庆县| 景谷| 扎赉特旗| 遂溪县| 邹平县| 钦州市| 永福县| 阳江市| 合水县| 广昌县| 泸溪县| 理塘县| 元谋县|