pTmp 변수를 사용하는 이유
노드를 추가하는 함수나 해제하는 함수에서 헤드노드를 pTmp변수에 대입한 후에 pTmp값을 가지고 코드를 짜는 게 이유가 있나요? 그냥 pTmp를 사용하지 않고 바로 헤드노드를 사용해도 괜찮지 않나요?
답변 1
0
가령 헤드 노드가 전역변수 m_head라고 가정했을 때 &m_head는 주소상수 입니다. 연산은 가능하지만 그 값 자체를 바꿀 수는 없습니다.
그리고 연결 리스트 전체를 순회하는 코드를 상수를 이용해 작성 할 경우
&m_head->next->next->next->next 같은 코드가 나올 수 밖에 없습니다. 더 큰 문제는 연결 리스트가 계속 늘어날 수 있는데 이를 코드 수준에서 몇 개 인지 미리 알고 작성 할 수도 없습니다. 이런 문제점을 해결하기 가장 좋은 방법은 다음 노드의 값을 변수에 저장하고 값을 계속해서 갱신하는 방식을 취하는 것입니다.
이렇게 하면 노드의 개수가 몇 개가 되든 코드 수준에서 고려할 필요가 없습니다.
while(pTmp) {
pTmp = pTmp->next;
}반복문을 수행하는 것으로 쉽게 전체 노드에 접근 할 수 있기 때문입니다.
만일 헤드노드에 대한 포인터를 사용하는 방식일 경우라 하더라도 헤드 노드에 대한 포인터를 다른 값으로 덮어 써버리는 순간 헤드노드에 대한 주소를 잃게 됩니다. 다시 접근 할 수 없기 때문에 메모리를 해제 할 수도 없게 됩니다. 대략 이 정도로 정리하면 좋을 것 같습니다. 참고하시기 바랍니다. 😄
05_adtFileIO 개정이력에 대한 질문
0
44
2
마지막 열의 노드를 삭제하였을때 읽기 엑세스 위반 발생 건
0
62
2
첫번째 루프에서 최소값을 못찾았는데 계속 진행하는 이유가 무엇인가요?
0
49
1
[질문]: [섹션4] -> [2중 연결 리스트로 전환] -> [21:30]
0
133
2
인덱스정렬 강의, 04_ListAndIndex질문드립니다.
0
126
1
예제는 어디서 다운로드 받을 수 있나요?
0
180
2
04_MultiIndex 예제에서 질문이 있습니다
0
121
1
헤드노드에 관해..
0
233
3
AddNewNode 함수 구현시 질문입니다.
0
161
2
Event Loop
0
194
1
인덱스정렬 강의, 04_ListAndIndex질문드립니다.
0
194
1
CPU의 다른 이름 Machine 강의 질의
0
274
4
스택의 POP코드 질문드립니다.
0
260
1
adtFileIO 예제코드관련 질문 있습니다.
0
171
1
ADT강의 관련 질문 있습니다.
0
232
2
RangeSearch002 의 singlelist.c 파일 중 질문 있습니다.
0
193
1
섹션4 자료 자체와 정렬된 인덱스 분리 내용 질문
0
253
2
자료 자체와 정렬된 인덱스 분리 강의에서 질문
0
238
2
구현 연습에 대한 개인적 의문
0
280
1
05_adtFileIO 프로젝트 문의
0
320
2
CLI UI적용 강의에서 질문드립니다.
0
337
1
SearchToRemove와 RemoveNode가 분리되어야 할 필요가 있을까요?
0
296
1
05_adtFileIO 프로젝트 문의
0
258
1
자료 자체와 정렬된 인덱스 분리 (인덱스 정렬) - 인덱스 범위 코드에 버그가 있어서 질문 드립니다.
0
306
2





