내년에 올라가기전에 자료구조 보는중인데
보니까 연결리스트로 스택 큐 이거저거 다하더라고
그래서 자료구조중에서 제일 핵심인거 같은데 맞음?
그리고 이거는 그냥 단순히 노드안에 있는 원소만 출력하는 함수인데
void allprint(node* target) {
node* cur = target;
while (cur->next != NULL) {
cur = cur->next;
printf("%d , \n", cur->data);
}
}
새노드 생성은 연결시켜야 하니까 다음노드 저장시킬 위에나온 cur같은 임시변수 생성시킬 필요가 있는건 알겠는데 문제는
어차피 포인터로 얕은복사 쓰니까 임시변수에다가 헤드값 저장 안시키고 그냥 헤드의 링크값 자체를 증가시켜도 될꺼같은데
왜 임시변수 선언하고 거기다가 헤드노드값 넣고 순회시키는 거임?
cur = head; cur = cur->next;
head = head->next;
둘 다 그게 그거 아닌가?
얕은복사 때문에 임시 변수 쓴다고 해도 일단 주소 값 다음값으로 넘겨버리면
함수 스코프 벗어나서 임시변수 사라진다고 해도 헤드는 헤드노드 원점으로 돌아오는것도 아니고
임시변수로 증가시킨 노드위치에 있을텐데 이게 이해가 안감
핵심마자용
책보니까 연결리스트로 스택이든, 큐든 다 돌려막기 하는 느낌 드는데 임시변수 쓰는 이유랑, 마지막 의문이 이해가 안감, 개념은 이해했는데 코딩이 좀;;
궁금하면 돌려보삼 포인트변수로 받으면 참조값이라 함수안에서 값 바꾸면 원본도 바낌
그니까 그게 얕은 복사자나
내 말은 왜 얕은 복사할껀데 굳이 임시변수 선언하고 거기가 링크 시키냐 그 말이랑, 얕은 복사로 인해 주소 값도 같이 바뀌는데 그거에 대한 말임