пузырьковая сортировка для связанного списка в C ++ - PullRequest
0 голосов
/ 21 декабря 2010

Я попытался реализовать сортировку 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;
}

связанный список должен быть отсортирован по дате и часам.но у меня есть некоторые проблемы с компиляцией.я действительно нуждаюсь в вашей помощи, спасибо, :)

Ответы [ 2 ]

2 голосов
/ 21 декабря 2010

В общем, есть проблемы, которые я бы решил следующим образом:

  1. В вашем классе TrainManager есть члены char *, а не std :: string, и вы не управляете памятью.Не говоря уже о том, что все участники являются частными, что может вызвать проблемы при попытке сравнить их участников.

  2. Лучше поменять местами «ссылки», чем менять фактические данные.внутри них.

1 голос
/ 21 декабря 2010

Ошибка компилятора довольно очевидна.Используйте Swap(*(curr->m_data),*(curr->m_next->m_data)); вместо Swap(&(curr->m_data),&(curr->m_next->m_data));.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...