2010-12-21 4 views
0

내 대학 프로젝트에서 buble 정렬을 구현하려고했지만 몇 가지 문제가 있습니다. 도와 주시면 기쁠 것입니다.C++의 연결된 목록에 대한 버블 정렬

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

코드로 코드를 모두 포맷 할 수 있습니까? 고맙습니다! –

+2

컴파일러 오류의 정확한 표현은 무엇입니까? –

+1

이 질문은 문맥 정보가 상당 부분 누락되었습니다. [코드에 대해 질문 할 때] (http : //www.catb.org/~esr/faqs/smart-questions.html#beprecise) [ "정확하고 유익한 정보를 얻으십시오."] (http://www.catb.org/~esr/faqs/smart-questions.html#beprecise) /www.catb.org/~esr/faqs/smart-questions.html#code) 및 [ "완벽한 질문 쓰기"] (http://tinyurl.com/so-hints)를 참조하십시오. – outis

답변

1

컴파일러 오류는 분명하다. Swap(&(curr->m_data),&(curr->m_next->m_data)); 대신 Swap(*(curr->m_data),*(curr->m_next->m_data)); 을 사용하십시오. 다음과 같이 일반적으로

2

내가 해결 할 문제가 있습니다

  1. 수업 TrainManager 숯불 * 회원 성병하지 : 문자열을 가지고, 당신은 메모리를 관리하지 않습니다. 모든 멤버가 비공개이므로 멤버를 비교할 때 문제가 발생할 수 있습니다.

  2. "링크"대신 실제 데이터를 바꾸는 것이 좋습니다.

관련 문제