반응형
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 |
최근댓글