c++ linked list 중복제거, 역순 질문입니다.

단순링크드리스트에서 중복된 데이터를 갖는 리스트가 있으면 지우는 소스입니다. IsEmpty()는 리스트가 0인지 여부를 묻는 bool형 함수이고 Length()는 리스트의 길이를 체크하는 함수입니다. Delete(int Position) 함수는 지정된 위치(Position 정수)의 리스트를 제거 하는 함수입니다. 이 함수들은 전부 잘 작동 되는데 중복제거 함수인 deDuplicate() 함수가 문제가 있네요... 하다하다 왜 안되는지 모르겠는데 계속 오류나면서 팅겨서 질문합니다..

void listClass::deDuplicate()
{
    if (IsEmpty() || Length()==1)
        cout << "not enough list" << endl;
    else
    {
        Nptr temp = Head;
        Nptr temp2 = Head;
        temp2 = temp2->Next;
        for (int i = 0; i < Count; i++)
        {
            temp = temp->Next;
            for (int j = 0; j < Count-1; j++)
            {
                temp2 = temp2->Next;
                if (temp->Data == temp2->Data) {
                    Delete(j+2);
                    Count -= 1;
                }
            }
        }
    }
}

클래스 입니다.

typedef struct nodeRecord
{
    int Data;
    struct nodeRecord* Next;
}node;

typedef node* Nptr;

class listClass
{
public:
    listClass();
    listClass(const listClass& L);
    ~listClass();
    void Insert(int Position, int Item);
    void Delete(int Position);
    void Retrieve(int Position, int *ItemPtr);
    void Init();
    bool IsEmpty();
    int Length();
    void printlist();
    void deDuplicate();
    //void reverse();
private:
    int Count;
    Nptr Head;
}; 

reverse 함수는 정렬된 리스트를 역순으로 연결하는 함수인데... 도대체 어떻게 연결을 시작해서 마무리를 지어야 할지 도저히 모르겠네요 혹시 이부분도 도와주실수 있으시다면 부탁드립니다.

  • 에러 내용이 뭔가요? 혹시 세그멘테이션 폴트인가요? 정한슬 2017.10.9 22:09

1답변

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.