我试图为我的大学项目实施布雷排序,我遇到了一些问题。 如果你能帮助我,我会很高兴。
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;
}
链接列表应按日期和小时排序。 但我有一些编译问题。 我非常需要你的帮助 谢谢,:))
答案 0 :(得分:2)
一般来说,我会解决以下问题:
你的类TrainManager有char *成员而不是std :: string,你没有管理内存。更不用说所有成员都是私人的,当你尝试比较其成员时,这可能会给你带来问题。
您最好交换“链接”,而不是交换其中的实际数据。
答案 1 :(得分:1)
编译错误非常明显。
使用Swap(*(curr->m_data),*(curr->m_next->m_data));
而不是Swap(&(curr->m_data),&(curr->m_next->m_data));
。