2017-12-02 8 views
-1

나는 다음과 같이 링크 된 목록에 두 개의 노드를 교체하려고 :스와핑 연결리스트 요소

void swapTwo(course*& first, course*& second) 
{ 
    auto temp = first; 
    first = second; 
    second = temp; 
    second->next = first->next;  // error right here due to self-referencing 
    first->next = second; 
} 

나는 오류를 가지고 2 ~ 때문에> 다음 이미 자체 참조입니다. 이것에 우아한 해결책이 있습니까? 나는 2 과목의 요소를 만들고 첫 번째와 두 번째를 재구성 할 수 있지만 너무 짐승 같다. 감사!

+0

노드의 데이터 요소의 크기는 어느 정도입니까? 간단히'std :: swap (first-> data, second-> data);' – user4581301

+0

이 작업을하려면 이전 노드에 액세스해야합니다. 이것을 이중으로 연결된 링리스트로 바꾸면 많은 문제를 줄일 수 있습니다. – PythEch

+0

여러분 (그리고 숙녀가 있다면), 나는 벡터로 변환, 정렬 및 다시 변환하면 많은 문제를 줄일 것이라고 생각했습니다. 진심으로 감사드립니다. – CaTx

답변

1

여러 시나리오를 고려해야합니다. 두 인접하지 않은 없으며, 그 중 하나가 머리 또는 꼬리

  1. 그들은 하나가을 때
  2. 중 하나가 머리 또는 꼬리
  3. 입니다 인접 해있을 때 머리가 다른 한편 꼬리 인 경우
  4. 링크 된 목록에서 두 개 밖에없는 경우.
+0

감사! 연결된 목록을 벡터로 변환하고 정렬 한 다음 연결된 목록으로 다시 변환 할 수 있다고 생각했습니다. 그렇게 덜 두통. – CaTx