c++ - C++中链表的冒泡排序

标签 c++ algorithm sorting

我尝试为我的大学项目实现 buble 排序,但我遇到了一些问题。 如果你能帮助我,我会很高兴。

void TrainManagerLinkedList:: Swap(TrainManager & x,TrainManager & y)
 {
  TrainManager temp;
  temp =x;
  x = y;
  y = temp;
 }

void TrainManagerLinkedList::BubbleSort()
 {
  TrainManagerLink* outerCurr = this->m_head;
  TrainManagerLink* curr = NULL;

  while(outerCurr != NULL)
  {
   curr = this->m_head;
   while(curr != NULL && curr->m_next != NULL)
   {
    /*if the current link greater then the next swap between them*/
    if (curr->m_data->GetDate() > curr->m_next->m_data->GetDate())
    {
     Swap(&(curr->m_data),&(curr->m_next->m_data));
    }
    else if((curr->m_data->GetDate() == curr->m_next->m_data->GetDate())&(curr->m_data->GetTime() > curr->m_next->m_data->GetTime()))
    {
      Swap(&(curr->m_data),&(curr->m_next->m_data));
    }
    curr = curr->m_next;
   }
   outerCurr = outerCurr->m_next;
  }
  /*now the list is sorted :)*/

 }

我的数据类型

TrainManagerLink *m_head;
 TrainManagerLink *m_tail;
 int m_numOfElements;

class TrainManager
{
 char * m_firstStation;
 char *m_lastStation;
 char * m_origin;
 char * m_destination;
 int m_timeBetweenStations;
 Hour m_releaseTime;
 Hour m_arriveTime;
 Hour m_firstHour;
 Date m_Date;
 int m_standInstation;
 DelayersLinkedList delay;
}

链表应该按日期和时间排序。 但我有一些编译问题。 我真的需要你的帮助 谢谢,:)

最佳答案

一般来说,我会解决以下问题:

  1. 您的类 TrainManager 有 char* 成员而不是 std::string,并且您没有管理内存。更不用说所有成员都是私有(private)的,这在您尝试比较其成员时可能会给您带来问题。

  2. 最好交换“链接”而不是交换其中的实际数据。

关于c++ - C++中链表的冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4497820/

相关文章:

javascript - 使用 jQuery 导入数据的 JSON(外部文件)的度假村输出

bash - 使用 os.system 正确处理从 Python 转义的 shell

c++ - Xcode 中 DEBUG 标识符的编译错误

c++ istringstream()函数将字符串转换为int引发错误

algorithm - 数组区分逻辑

java - Java 中递归快速排序的分区实现不起作用

c++ - 如何修复条件变量等待/通知的竞争条件

c++ - 释放 STL vector 中的对象

algorithm - 用最小数目覆盖 N 组连续整数

java - 对小整数数组进行排序的最佳排序算法是什么?