안녕하세요, 나는 숙제를 위해 노력하고있어, 나는 센티널없이 원형 연결 deque를 역전하려고 노력하고있어. 여기 내 데이터 구조는 다음과 같습니다센티널없이 원형 deque를 반전
struct DLink {
TYPE value;
struct DLink * next;
struct DLink * prev;
};
struct cirListDeque {
int size;
struct DLink *back;
};
여기 내 방법은 양단 큐 반전에있다 :
void reverseCirListDeque(struct cirListDeque* q) {
struct DLink* current;
struct DLink* temp;
temp = q->back->next;
q->back->next = q->back->prev;
q->back->prev = temp;
current = q->back->next;
while(current != q->back) {
temp = current->next;
current->next = current->prev;
current->prev = temp;
current = current->next;
}
}
을 내가 그것을 실행하고 (에 값 1, 2, 3을 넣어 그러나 유형에 대한 단지의 별칭입니다 이 경우에는 int) 그리고 그것을 반대로하면 2, 1, 3이됩니다. 누군가 내가 잘못하고있는 것에 대한 아이디어가 있습니까?
미리 감사드립니다.
고맙습니다. 그러나 위의 코드에서 변경된 새로운 변경 사항은 3, 2, 1 대신 2, 1, 3을 인쇄합니다. – SDLFunTimes
내 업데이트를 참조하십시오. :) q-> back-> next (포인터를 교환 한 후 q-> back-> prev가됩니다)는 이전 목록의 헤드이므로 새 포인터의 꼬리가됩니다. – cHao
고맙습니다. 문제 해결됨. – SDLFunTimes