이중 연결리스트에서의 삽입 함수를 공부중입미다
typedef int element
typedef struct DlistNode{
element data
struct DlistNode *llink
struct DlistNode *rlink
}DlistNode
void dinsert_node(DlistNode *before, DlistNode *new_node)
{
new_node->llink=before
new_node->rlink=before->rlink
before->rlink->llink=new_node
before->rlink=new_node
}
노드 new_node응 노드 before의 오른쪽에 삽입하는 함수입니다. 제가 매번 헷갈리는게
함수의 첫째줄인 new_node->llink=before 는
before라는 포인터의 주소를 new_node의 왼쪽 링크필드에 대입하는 것인가요??
삽입해서 연결하려면
new_node->llink=before->rlink처럼
before의 오른쪽 링크필드가 가리키는 것이
새로운 노드의 왼쪽 필드에 들어가야 하는게 아닌가요...? 이게 그림을 보고 하는데도 잘 이해가 안갑니다.. =라는 연산이 후위대입?이라 생각하는게 아닌가요??
혹시 ->연산과 =연산 중 =연산이 먼저인가요?? 히이익 그니까 완전히 다 뒤에서부터 차례차례하면 되는건가.. =(대입)가 있는데 "가리킨다" 라는 말이 넘모 안와닿네요 ㅜㅜ 어휴
포인터 개념은 책에 있는 초반 정의 부분만 보고 직접 그려보면서 이해하는게 나을듯. 대충 이해하고 진행하면 혼란옴