#include <stdio.h>

#include <stdlib.h>

#define MAX_LIST_SIZE 100


typedef int element;


typedef struct {

element array[MAX_LIST_SIZE];

int size;

}ArrayListType;


void error(char* message) {

fprintf(stderr, "%s\n", message);

exit(1);

}


void init(ArrayListType* L) {

L->size == 0;

}


int is_full(ArrayListType* L) {

return L->size == MAX_LIST_SIZE;

}


element get_entry(ArrayListType* L, int pos) {

if (pos < 0 || pos >= L->size)

error("위치 오류");

return L->array[pos];

}


void print_list(ArrayListType* L) {

int i;

for (i = 0; i < L->size; i++)

printf("%d->", L->array[i]);

printf("\n");

}


void insert_last(ArrayListType* L, element item) {

if (L->size >= MAX_LIST_SIZE) {

error("리스트 오버플로우");

}

L->array[L->size++] = item;              <- 요부분이 문제 

}             

0x00007FF6B8231D8A에(Project2.exe의) 처리되지 않은 예외가 있습니다. 0xC0000005: 0x0000007919442E70 위치를 기록하는 동안 액세스 위반이 발생했습니다..           이게 자꾸 뜸



void insert(ArrayListType* L, int pos, element item) {

if (!is_full(L) && (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++;

}

}


element delete(ArrayListType* L, int pos) {

element item;


if (pos < 0 || pos >= L->size)

error("위치 오류");

item = L->array[pos];

for (int i = pos; i < (L->size - 1); i++)

L->array[i] = L->array[i + 1];

L->size--;

return item;

}


int main(void) {

ArrayListType list;


init(&list);

insert(&list, 0, 10); print_list(&list);

insert(&list, 0, 20); print_list(&list);

insert(&list, 0, 30); print_list(&list);

insert_last(&list, 40); print_list(&list);

delete(&list, 0); print_list(&list);

return 0;

}


C언어 입니다.


구글링해서 해결해보려했는데 모르겠어요 ㅠㅠㅠㅠ