Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Vane
- Android
- ruby2d
- boj
- Baekjoon
- error
- CPP
- OTLanguage
- gradle
- IntelliJ
- Java
- plugin
- Spring
- Godot
- react
- JS
- rubymine
- gnuplot
- 개발노트
- OAuth
- 루비
- jetbrains
- GitHub
- maven
- Python
- ruby
- Shell
- C
- kotlin
- RaspberryPi
Archives
- Today
- Total
PersesTitan(페르) 기술블로그
[C] 리스트 add, set, delete간단하게 구현해보기 본문
기본 구조
(element는 저장할 데이터 타입입니다.)
typedef struct {
element array[SIZE];
int size;
} ArrayListType;
size: 객체의 길이를 나타냅니다.
리스트 뒤에 객체 추가(add)
마지막에 추가하는 코드는 간단합니다. 크기를 1증가 시키고 해당 위치에 값을 넣어주면 됩니다.
void add(ArrayListType *l, element item) {
if (l->size >= SIZE)
fprintf(stderr, "Stack Over Flow");
l->array[l->size++] = item;
}
특정 위치에 객체 추가(set)
position(값을 넣을 위치)가 범위를 넘어가지 않았는지 확인하고 만약 값이 유효하다면 position뒤에 값을 1칸씩 뒤로 밀어서 저장한뒤 해당 위치에 넣어야할 객체를 넣고 크기(size)를 1증가 시켜주면 됩니다.
void set(ArrayListType *l, int position, element item) {
if (l->size != SIZE && position >= 0 && position <= l->size) {
for (int i = l->size; i > position; i--)
l->array[i] = l->array[i-1];
l->array[position] = item;
l->size++;
}
}
특정 위치 객체 삭제 (delete)
삭제된 객체의 값을 반환하기 위해서 임시로 삭제할 객체를 item에 저장하고 사이즈를 1줄인뒤에 삽입에 반대로 position위치로 1칸씩 당겨서 저장해줍니다.
element delete(ArrayListType *l, int position) {
if (position < 0 || position >= l->size) {
fprintf(stderr, "Index Error: %d", position);
exit(1);
}
element item = l->array[position];
l->size--;
for (int i = position; i < l->size; ++i)
l->array[i] = l->array[i+1];
return item;
}
'Language > C' 카테고리의 다른 글
[C++] 입출력 연산자 재정의 (오버라이딩)하기 (0) | 2024.01.24 |
---|---|
[C] 원형큐 구조 정리 (0) | 2023.12.17 |
[C] 선형큐 구조 정리 (0) | 2023.12.17 |
[C] 거듭제곱 함수 만들기 (0) | 2023.10.23 |
[C] 팩토리얼 함수 만들기 (2) | 2023.10.23 |