본문 바로가기

자료구조&알고리즘

[단일 연결 리스트 ] 특정 값 노드 검색

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;
}