4개의 노드 중 특정 노드의 값을 검색하고자 하는 경우의 코드 구현 방법에 대해 알아보자.
curNode 가 전체 노드를 순회하고 원하는 노드의 값이 나오면 return, 나오지 않으면 NULL을 반환하면 된다.
<코드구현>
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int value;
struct node* next;
} node;
node* head = NULL;
node* searchNode(int target) {
node* curNode;
if (head == NULL) return NULL; //노드가 없으면 NULL 반환
curNode = head;
while (curNode != NULL) {
if (curNode->value == target) {
return curNode;
}
curNode = curNode->next;
}
return NULL; //찾는 값이 없으면 NULL 반환
}
int main() {
node* n1 = (node*)malloc(sizeof(node));
node* n2 = (node*)malloc(sizeof(node));
node* n3 = (node*)malloc(sizeof(node));
node* n4 = (node*)malloc(sizeof(node));
n1->value = 10;
n2->value = 20;
n3->value = 30;
n4->value = 40;
n1->next = n2;
n2->next = n3;
n3->next = n4;
n4->next = NULL;
head = n1;
int target = 30;
node* result = searchNode(target);
if (result != NULL) {
printf("Node with value %d found.\n", result->value);
} else {
printf("Node with value %d not found.\n", target);
}
// 메모리 해제
free(n1);
free(n2);
free(n3);
free(n4);
return 0;
}
'자료구조&알고리즘' 카테고리의 다른 글
[단일연결리스트] 노드 정렬 삽입(오름차순) (0) | 2024.05.25 |
---|---|
[단일 연결 리스트 ] 특정 값 노드 삭제 | 중간 값 삭제 (0) | 2024.05.25 |
[단일연결 리스트] 전체 노드 삭제 (0) | 2024.05.25 |
[단일 연결 리스트] 첫 노드 삭제 (0) | 2024.05.19 |
[단일 연결 리스트] 노드 맨 뒤 삽입 (0) | 2024.05.19 |