가능한 중복 : 나는 C++에서 단독 LinkedList의 두 노드를 교환 할 수있는 알고리즘을 쓰기 위해 노력하고있어
debug help - swap 2 nodes of double link listC++ LinkedList의 교환 노드
. 여기에 지금까지이 작업은 다음과 같습니다
void swap(ListNode *node1, ListNode *node2)
{
ListNode *prev1 = head;
ListNode *prev2 = head;
//Search previous node for node1:
while(prev1->next!=node1 || prev1 != node1)
prev1 = prev1->getNext();
//Search previous node for node2:
while(prev2->next!=node2 || prev2 != node2)
prev2 = prev2->getNext();
if(node1->next==node2)
{ //This means node1 == prev2?
tail = node1;
node1->next = NULL;
head = node2;
node2->next = node1;
}
else if(node2->next==node1)
{ // node2 == prev1
tail = node2;
node2->next = NULL;
head = node1;
node1->next = node2;
}
if(node1->next == NULL)
{ //node1 is last
node1->next = node2->next;
tail = node2;
node2->next = NULL;
prev1->next = node2;
prev2->next = node1;
}
}
하지만 LL은 두 가지 요소가 있다면처럼 내가 얻을 수있는 다양한 경우의 수를 실현하거나, 노드 1, 등 등 내가 전에 우리에게 노드 2를 준 경우 이것이 복잡하고 추악 할 수 없다는 것을 깨달았습니다. 그렇다면 두 노드를 서로 바꾸는 알고리즘을 어떻게 작성합니까?
* 특정 *이 질문이 무엇입니까? –
스택 오버플로 (웹 포럼이나 게시판이 아님)에 "몇 가지 팁"을 제공하지 않습니다. 우리는 프로그래밍 언어에 관한 구체적인 질문에 답합니다. –
"연결된 목록에서 두 노드를 어떻게 바꿔 넣을 수 있습니까?"라는 질문은 꽤 합리적이고 구체적인 질문입니다. – tenfour