본문 바로가기

자료구조&알고리즘

[단일 연결 리스트 ] 노드 순회(traversal)

노드 순회는 트리 구조에서 각 노드를 한 번씩 방문하는 과정이다. 

head 는 첫 번째 노드를 가리키고, 노드의 마지막 값에서는 NULL 이 들어있다. 

노드를 모두 순회하기 위해 현재 노드 위치를 가리키는 curNode 를 선언한다. 

typedef strcut{
	int value;
	struct node* next;
}
node* head = NULL; // 초기값을 NULL로 설정

void display() {
	node* nurNode;
}

 

head 에 첫 번째 노드의 주소값이 저장되어 있으니까 curNode 에 head 값을 넣는다. 

curNode = head;

 

마지막 노드 전까지 순회하려면 포인터가 NULL 을 가리키지 않을 때까지 노드를 순회하고 값을 출력하면 된다. 

또한 첫 번째 노드의 값을 출 그 다음 노드의 정보를 알 수 있는 방법은 노드의 포인터가 가리키는 값으로 이동하면 되니까

아래와 같이 코드를 작성해준다. 

while (curNode->next != NULL){
	printf("%d", curNode->value);
	curNode = curNode->next); 
}

 

두 번째 노드의 포인터가 NULL 을 가리키면 while 문을 건너뛰게 되고, 마지막 원소 값을 출력하면 된다. 

printf("%d\n", curNode->value);

 

<완성된 코드>

typedef struct node{
	int value;
	struct node* next;
}node;

node* head = NULL; // 초기값을 NULL로 설정

void display() {
	node* nurNode;
	nurNode = head;

	while (curNode->next != NULL){
		printf("%d\n", curNode->value);
		curNode = curNode->next); 
	}
	printf("%d\n", curNode->value);
}