일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 카카오
- git
- 파이썬
- nestJS
- C언어
- thymeleaf
- 가상면접사례로배우는대규모시스템설계기초
- Spring
- 코테
- 카카오 알고리즘
- @Component
- 프로그래머스
- TypeORM
- Nodejs
- 카카오 코테
- 스프링
- C++
- 컴포넌트스캔
- nestjs auth
- 시스템호출
- 알고리즘
- AWS
- OpenCV
- spring boot
- 구조체배열
- nestjs typeorm
- 코딩테스트
- python
- 해시
- @Autowired
Archives
- Today
- Total
공부 기록장 💻
[자료구조] 배열 Array List 본문
#include <stdio.h>
#define MAX_LIST_SIZE 10
#define TRUE 1
#define FALSE 0
typedef int element;
typedef struct ArrayListType {
element data[MAX_LIST_SIZE];
int size;
}ArrayListType;
// init_list
void init_list(ArrayListType* L) { L->size = 0; }
// is_full
int is_full(ArrayListType* L) { return L->size == MAX_LIST_SIZE; }
// is_empty
int is_empty(ArrayListType* L) { return L->size == 0; }
// insert_first
void insert_first(ArrayListType* L, int item) {
if (is_full(L)) {
printf("List Array is full \n");
exit(1);
}
for (int i = L->size - 1;i >= 1;i--)
L->data[i + 1] = L->data[i];
L->data[0] = item;
}
// insert_last
void insert_last(ArrayListType* L, int item) {
if (is_full(L)) {
printf("List Array is full \n");
exit(1);
}
L->data[L->size++] = item;
}
// insert
void insert(ArrayListType* L, int pos, int item) {
if (!is_full(L) && pos >= 0 && pos <= L->size) {
for (int i = L->size - 1;i >= pos;i--)
L->data[i + 1] = L->data[i];
L->data[pos] = item;
L->size++;
}
}
// delete
element delete(ArrayListType* L, int pos) {
element item; // 삭제하여 반환할 요소
if (!is_empty(L) && pos >= 0 && pos <= L->size) {
item=L->data[pos];
for (int i = pos;i < L->size;i++)
L->data[i] = L->data[i + 1];
L->size--;
return item;
}
}
// get_entry
element get_entry(ArrayListType* L, int pos) {
if (!is_empty(L) && pos>=0 && pos<=L->size)
return L->data[pos];
}
// get_length
int get_length(ArrayListType* L) { return L->size; }
// print_list
void print_list(ArrayListType* L) {
printf("\n------ <리스트 출력> -----\n\n");
for (int i = 0;i < L->size;i++)
printf("%d ", L->data[i]);
printf("\n\n");
}
// clear
void clear(ArrayListType* L) {
for (int i = 0;i < L->size;i++)
L->data[i] = 0;
init_list(L);
}
// replace
void replace(ArrayListType* L, int pos, element item) {
if (!is_empty(L) && pos >= 0 && pos <= L->size)
L->data[pos] = item;
}
int main() {
ArrayListType arr;
init_list(&arr);
printf("<0부터 9까지의 숫자를 배열을 배열의 last에 삽입>\n");
for (int i = 0;i < 10;i++)
insert_last(&arr, i);
print_list(&arr);
printf("<리스트의 짝수번째 요소들을 20으로 변경>\n\n");
for (int i = 0;i < get_length(&arr);i += 2)
replace(&arr, i, 20);
print_list(&arr);
printf("<앞의 요소 5개를 삭제>\n\n");
for (int i = 0;i < 5;i++)
printf("%d 삭제\n", delete(&arr, 0));
print_list(&arr);
printf("<뒤의 요소 3개를 삭제>\n\n");
for (int i = 0;i < 3;i++)
printf("%d 삭제\n", delete(&arr, get_length(&arr)-1));
print_list(&arr);
printf("리스트의 길이 : %d\n", get_length(&arr));
printf("\n<리스트 모두 clear>\n\n");
clear(&arr);
print_list(&arr);
}
728x90
반응형
'# CS Study > DS Algorithm' 카테고리의 다른 글
Comments