void insertAtIndexNext(int index, int data)
{
struct Node *i_node = getNodeAtIndex(index);
struct Node *new = (struct Node*)malloc(sizeof(struct Node));
new->pPrev = i_node;
new->pNext = i_node->pNext;
new->data = data;
i_node->pNext->pPrev = new;
i_node->pNext = new;
}
getNodeAtIndex()는 헤드노드찾는함수고..
굵은글씨 부분이 이해가 안됨..
i_node pNext pNext
┌────┐ =======> ┌────┐ =======>
│ index │ │ new │
└────┘ <======= └────┘ <======
pPrev pPrev
굵은글씨대로 하면 제자리아님?
새로운 노드의 이전 노드를 원래 노드에 연결하고,
새로운 노드의 다음 노드는 원래 노드가 다음 노드를 가르키고 있던 노드를 가르킨다.
원래 노드의 다음 노드의 이전 노드를 새로운 노드를 가르킴.
직역하면 이말같은딩.
열심히작성했는데 답글점
뭐여 이게
i_node->pNext->pPrev = new; 이부분이 이상한데
이게 왜있는거임
아이노드가 가르키고 있는녀석을 뉴 노드가 가르키게 하고
아이노드가 가리키고 있는 녀석이 가리키고 있는 이전녀석을 뉴 노드로 한다고 하네.
아.,. 뒤에 NULL이라고 해놔서 햇갈렸네
그림 잘못그림.
저 소스코드로하면 맨 뒤에 노드가 NULL노드면 안되지..
아 그런가 NULL은 임의대로 그린거니 빼야겟다
뒤에거 NULL 이면 i_node->pNext->pPrev = new; 이 부분에서 런타임 에러 날껄
i_node->pNext->pPrev = new; 이부분을 해석하면 i_node의 다음노드(즉..새로운노드 다음에 들어갈 노드가 되겠지) 의 prev노드 에 New노드를 넣어준거니까.. New노드의 다음노드의 이전노드는 New노드 이다라는 연결이되지
라이트훅 뒤진다
new의 Prev는 i_node고...
으시발; 으아아ㅏ
pPrev, pNext가 값을 저장하는 변수니까 저렇게 하는거임