C 언어 ... Linked list 질문입니다.

nerd™의 이미지

더블링크드 리스트 질문입니다.

*노드구성

head - temp1 - tail 
head-temp1-temp2-tail
즉
head  -  temp1  -  tail
                ^
             temp2   넣기            

으로 temp1과 tail사이에 temp2를 끼어넣으려고 소스를 작성했습니다.

*1번

temp2->prev=temp1;
temp2->next=tail;
tail->prev=temp2;
temp1->next=temp2;

*2번

temp2->prev=tail->prev;
temp2->next=tail;
tail->prev=temp2;
tail->prev->next=temp2;

.

결과적으로
temp2->prev=temp1; 과 temp2->prev=tail->prev;
temp1->next=temp2; 과 tail->prev->next=temp2;
의 차이를 모르겠네요.

head  -  temp1  -  tail
                ^
             temp2   넣기            

저는 두개 소스가 같다고 생각하는데요
분명 다른거 같습니다.
제가 멀 잘못생각한 것인지 설명좀 해주세요

sajacall82의 이미지

tail->prev=temp2;
tail->prev->next=temp2;

요부분이 잘못 된것 같은데요..
위소스대로 하면
tail->prev->next=temp2;
이 부분은
temp2->next가 됩니다.

순간을 지배하는 사람이 인생을 지배한다.

차리서의 이미지

nerd™ wrote:
……
*2번
temp2->prev=tail->prev;
temp2->next=tail;
tail->prev=temp2;
tail->prev->next=temp2;

……

순서가 이상합니다.
temp2->prev = tail->prev;
temp2->next = tail;
tail->prev->next = temp2;
tail->prev = temp2;

이래야하는게 아닐까요?

--
자본주의, 자유민주주의 사회에서는 결국 자유마저 돈으로 사야하나보다.
사줄테니 제발 팔기나 해다오. 아직 내가 "사겠다"고 말하는 동안에 말이다!