c 연결리스트 삽입 코드 질문

c 연결리스트 삽입 코드 질문

작성일 2024.04.15댓글 1건
    게시물 수정 , 삭제는 로그인 필요


tail에 삽입하는 부분에 대한 강의 교안인데요..잘 이해가 안 가네요.
1. 노란색 부분이 잘 이해가 안 가는데 tail은 node_t형 포인터고 root도 node_t형 포인터인데...
tail = root 이렇게하면 무슨 목적인가요? 
포인터에 포인터를 대입하는데... 원래 주소를 대입하는 거 아닌가요? tail에 root의 주소가 들어가는건가요? tail = root부분이 잘 이해가 안 가네요...

2. tail = newnode 이 부분도 위와 비슷하게 이해가 잘 안 가네요... node형 포인터에 node형 포인터를 대입하는 건 무슨 뜻인지 모르겠네요...찾아보니 똑같은 곳을 가리키게 한다(?) 좀 추상적으로 나와있던데 쉽게 설명부탁드려요..


#c 연결리스트 #c 연결리스트 구현 #c 연결리스트 특정 노드 삭제 #c 연결리스트 오름차순 정렬 #c 연결리스트 정렬 #c 언어 연결리스트

profile_image 익명 작성일 -

처음 리스트를 생성할 때는 리스트의 내용물이 1개이기 때문에 리스트의 머리 부분인 root와 tail의 주소값을 같게 하는 겁니다. 왜 굳이 같게 하냐면 root의 next가 새로운 tail이 될 노드를 가리키도록 하기 위해서입니다. 만약 이 처리를 하지 않으면 최초 상태에서 처음으로 노드가 붙을 때 root에서 새로운 node를 연결해주는 특별한 처리가 필요합니다.

즉 과정을 정리하면

1. 1번 노드 생성(root)

2. 1번 노드(root)와 마지막 노드(tail)를 같도록 지정

3. N번 노드(newnode) 생성 (N=2부터 시작, 9까지 반복)

4. N-1번 노드(tail)의 다음 노드(next)를 N번 노드(newnode)로 지정

5. 마지막 노드(tail, 현재 N-1번 노드 가리키는 중)를 N번 노드(newnode)로 지정

6. 3번으로 돌아감

인데 만약 tail=root이 없다면 tail은 아무런 값도 아니기 때문에 N=2일 때 4번 과정을 수행할 수가 없습니다. 즉 반복문이 최초로 돌 때 4번 대신 root의 next를 newnode로 지정하는 예외 처리를 해줘야 한다는 말입니다.

연결리스트 addnode 코드 포인터 질문

... *tail = new; } 연결리스트를 짜는 도중 제 기본기에 문제가 있는 것을... 해주니 코드가 돌아가던데 *와 **의 차이가 뭘까요 ? *는 주솟값을 담는 포인터...

C언어 연결리스트 기초 질문드립니다

연결리스트 생성 코드라고 나와있습니다 사진에는 없지만 상단부에 노드... 각 새로운 digit는 연결리스트의 시작 부분(헤드)에 삽입되고, 이전 헤드는 새로...