#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언어 입니다.
구글링해서 해결해보려했는데 모르겠어요 ㅠㅠㅠㅠ
챗봇에 문의 바랍니다. 감사합니다.