공부도 할겸 C언어로 연결리스트 구현.... 그냥 입력은 맨 처음에 넣는 방법으로 했고... 간단하게 구현해서 코드 읽기도 어렵지 않고, 어떻게 생각하면 부족한 부분이 많은 코드...

연결 리스트 : 일정한 순설르 가지는 데이터 항목들을 표현한느 방법중 하나. 배열과 같은 순차적 표현방법과 달리 데이터 항목의 논리적인 순서만 유지되고 기억장소 내에서는 각 항목들의 임의의 위치를 가지도록 하는 자료구조.


#include <stdio.h>
#include <stdlib.h>
 
 
struct  Node {
    int data;
    Node* next;
};
 
void isnert_node(Node* node, int input_data)    {
 
    Node* newNode = (Node *)malloc(sizeof(Node));
    newNode-&gt;data = input_data;
   
    if(node-&gt;next == NULL)  newNode-&gt;next = NULL;
    else                    newNode-&gt;next = node-&gt;next;
 
    node-&gt;next = newNode;
}
   
 
void delete_node(Node* node, int delete_data)   {
    Node* tmp = (Node* )malloc(sizeof(Node));
    Node* tmp_prev = (Node*) malloc(sizeof(Node));
   
    tmp = node;
    tmp_prev = node;
   
    if(tmp-&gt;next == NULL)   {
        printf("no value ");
        return ;
    }
   
    while(1)    {
        if(tmp-&gt;next == NULL)   {
            printf("no search ");
            return;
        }
        tmp_prev = tmp;
        tmp = tmp-&gt;next;
       
        if(tmp-&gt;data == delete_data)    {
            tmp_prev-&gt;next = tmp-&gt;next;
            free(tmp);
            return ;
        }
    }
   
}
 
void display_node(Node* node)   {
    Node *tmp = node;
   
    printf("[start]");
   
    while(tmp != NULL)  {
        printf(" -&gt; [%d]", tmp-&gt;data);
       
        tmp = tmp-&gt;next;
    }
   
}
 
 
int main()
{
 
    Node* head = (Node* ) malloc(sizeof(Node));
   
    head-&gt;data = 0;
    head-&gt;next = NULL;
   
    int in;
    char _input;
   
    while(1)    {
        printf("[(i)nsert, (d)elete, (p)rint, (q)uit] : ");
        scanf("%c", &amp;_input);
        getchar(); // 엔터 입력
 
        if(_input == 'i')      {
            printf("input number : ");
            scanf("%d", &amp;in);
 
            getchar();
            isnert_node(head, in);
        }
        else if(_input == 'd')      {
            printf("delete number : ");
            scanf("%d", &amp;in);
            getchar();
 
            delete_node(head, in);
        }
        else if(_input == 'p')    display_node(head-&gt;next);
        else if(_input == 'q')    break;
        else                        printf("Invalid input.. ");
        printf(" ");
    }
   
    fflush(stdin);
    free(head);
 
    return 0;   
}


Comment



티스토리 툴바