[Data Structure] #Array - C언어
15222 단어 data structurearrayarray
배열이란?
배열을 사용하면 메모리에 고정된 크기를 할당하며 연속적으로 데이터를 저장할 수 있습니다. 하지만 동적으로 크기를 줄이거나 늘릴 수 없다는 말이기도 합니다.
배열은 index로 요소에 접근하기 때문에 검색을 매우 빠르게 할 수 있습니다. 그러나 삽입, 삭제 연산을 할 경우 기존의 데이터들을 이동시켜야 하는 단점도 가지고 있죠.
구현
#include <stdio.h>
#include <stdlib.h>
#define MAX_LIST_SIZE 100
typedef struct {
int array[MAX_LIST_SIZE];
int size;
} ArrayList;
void init(ArrayList *L) {
L->size = 0;
}
int is_empty(ArrayList *L) {
return L->size == 0;
}
int is_full(ArrayList *L) {
return L->size == MAX_LIST_SIZE;
}
void print_array(ArrayList *L) {
for (int i = 0; i < L->size; i++) {
printf("%d ->", (L->array[i]));
}
}
void insert(ArrayList *L, int pos, int item) {
if (is_full(L)) {
printf("array is full");
exit(1);
}
if (pos >= 0 && pos < L->size) {
for (int i = L->size - 1; i >= pos; i--) {
L->array[i + 1] = L->array[i];
}
L->array[pos] = item;
L->size++;
}
}
void insert_last(ArrayList *L, int item) {
if (is_full(L)) {
printf("array is full");
exit(1);
}
L->array[L->size++] = item;
}
int delete_item(ArrayList *L, int pos) {
if (is_empty(L)) {
printf("array is empty");
exit(1);
}
if (pos < 0 || pos > L->size) {
printf("pos error");
exit(1);
}
for (int i = pos + 1; i < L->size; i++) {
L->array[i - 1] = L->array[i];
}
L->size--;
return L->array[pos];
}
int main(void) {
ArrayList list;
init(&list);
insert_last(&list, 1);
insert_last(&list, 2);
insert_last(&list, 3);
insert_last(&list, 4);
insert_last(&list, 5);
insert(&list, 3, 10);
insert(&list, 5, 10);
delete_item(&list, 1);
delete_item(&list, 4);
print_array(&list);
return 0;
}
Author And Source
이 문제에 관하여([Data Structure] #Array - C언어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@y1andyu/Data-Structure-Array-C언어저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)