C++实现单链表按k值重新排序的方法

C++实现单链表按k值重新排序的方法,第1张

概述本文实例讲述了C++实现单链表按k值重新排序方法。分享给大家供大家参考,具体如下:

本文实例讲述了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++程序设计有所帮助。

总结

以上是内存溢出为你收集整理的C++实现单链表按k值重新排序的方法全部内容,希望文章能够帮你解决C++实现单链表按k值重新排序的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1245167.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存