반응형

Linked List 말고 Array List 로 만들면 이렇게.

노드를 만들어서 사용하는게 아니라 그냥 배열로 관리.

메모리 아끼고, 인덱스로 바로 찾아갈 수 있어서 좋지만
중간의 요소를 수정하는 경우가 많으면 손해

main 에서 테스트를 목적으로 하여서 처리 안된 내용이 많습니다.

 

 

실행결과

 

 

텍스트 버전

#include <stdio.h>
#include <stdlib.h>

// ArrayList 정의
typedef struct ArrayList{
    int arr[100];
    int size;
} ArrayList;


// ArrayList 생성
ArrayList* initArrayList(){
    ArrayList* arrList = (ArrayList*)malloc(sizeof(ArrayList));
    arrList->size = 0;
    return arrList;
}

// 맨 뒤에 요소 추가   //사이즈 넘어가면 에러나니까 따로 error  처리해줘야되는데 일단 생략함
void append(ArrayList* arrList, int value){
    *(arrList->arr+arrList->size) = value;      // 배열 가져와서, 사이즈만큼 칸 옆으로 이동시켜줌 . 그리고 값 할당
    ++(arrList->size);                          // 값 하나 넣었으니 사이즈 늘려줌
}

// size 확인
int size(ArrayList* arrList){
    return arrList->size;
}

// 모든 요소 출력
void info(ArrayList* arrList){
    printf("elements : [ ");
    for(int i = 0 ; i < arrList->size; ++i){
        printf("%d ", *(arrList->arr+i));
    }
    printf("]\n");
}

int main(){
    ArrayList * al = initArrayList();

    printf("size : %d\n", size(al));

    append(al, 777);
    append(al, 888);
    append(al, 123);

    info(al);

//    printf("%d\n", *(arrPtr));
//    printf("%d\n", *(arrPtr+1));

    return 0;
}

라이브러리가 없었을때는 얼마나 힘들었을까....

반응형

'개발 > C' 카테고리의 다른 글

[c언어] Linked List 구현  (0) 2021.08.07
시니어 개발자의 for 문 사용법  (0) 2021.05.11
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기