체인 테이블두 개의 교환 체인 테이블의 노드
제목.
체인 시계를 정하고 그 중 서로 인접한 노드를 교환하며 교환된 체인 시계를 되돌려줍니다.너는 단순히 노드 내부의 값을 바꾸는 것이 아니라 실제적으로 노드 교환을 해야 한다.
1->2->3->4를 주면 2->1->4->3으로 돌아가야 합니다.주어진 1->2->3->4->5, 당신은 2->1->4->3->5.
제목 출처
분석하다.
내가 처음 생각한 사고방식은 귀속이 아니라 교체였지만 귀속이 비교적 간단하다고 느꼈다.귀속: 우선 귀속 공식을 생각해 내고 제목의 뜻에 따라 서로 인접한 노드를 교환해야 한다.
first->next = swapPairs(second->next); second->next = first; 1. 첫 번째 노드의next 바늘은 두 번째 노드의 다음 노드를 가리킨다.2. 두 번째 노드의next 바늘은 첫 번째 노드를 가리켜야 한다.1과 2의 순서는 바꿀 수 없는데, 왜?2를 먼저 실행하면second->next가 잃어버리기 때문에 1도 오류가 발생합니다
반환값은 노드가 둘씩 교환되기 때문에 당연히 교환 후의 두결점을 되돌려야 한다.
역귀출구if(NULL==head||NULL===head->next) {return head;
이렇게 하면 문제도 해결된다.
코드 구현
귀속
struct ListNode* swapPairs(struct ListNode* head){
if( NULL == head || NULL == head->next )
{
return head;
}
struct ListNode *first = head;
struct ListNode *second = head->next;
first->next = swapPairs(second->next);
second->next = first;
return second;
}
번갈아
struct ListNode* swapPairs(struct ListNode* head){
//head NULL
if( NULL == head ) return head;
struct ListNode *temp;
struct ListNode *p,*q,*old;
old = p = head; //
q = head->next; //
while( q != NULL && p != NULL )
{
temp = q;
p->next = q->next;/* 1 3*/
q->next = p;/* 2 1*/
if( p==head )
{
head = temp;
}
else
{
old->next = temp;
}
old = p;
//
p = p->next;
if( p == NULL )/* p=NULL,q p NULL*/
{
q = NULL;
}
else
{
q = p->next;
}
}
return head;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.