티스토리 뷰

배열리스트(ArrayList)



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
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#define MAX_LIST_SIZE 100
 
typedef int element;
 
typedef struct ArrayList {
    element list[MAX_LIST_SIZE];
    int length;
};
 
//리스트의 모든 요소 표시
void display(ArrayList *list);
//길이 반확
int getLength(ArrayList *list);
//pos위치의 요소 반환
int getEntry(ArrayList *list, int position);
//item 있는지 검사
int isInList(ArrayList *list, element item);
//pos위치의 요소를 item으로 변환
void replace(ArrayList *list, int position, element item);
//pos위치의 요소 삭제 후 삭제한 item 반환
element deletePos(ArrayList *list, int position);
//모든 요소 삭제
void clear(ArrayList *list);
//처음에 추가
void addFirst(ArrayList *list, element item);
//마지막에 추가
void addLast(ArrayList *list, element item);
//pos에 추가
void add(ArrayList *list, int position, element item);
 
int isFull(ArrayList *list);
int isEmpty(ArrayList *list);
void init(ArrayList *list);
 
 
 
 
 
cs


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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include "ArrayList.h"
 
void init(ArrayList *list)
{
    list->length = 0;
}
 
int isEmpty(ArrayList *list)
{
    return list->length == 0;
}
 
int isFull(ArrayList *list)
{
    return list->length == MAX_LIST_SIZE;
}
 
void add(ArrayList *list, int position, element item)
{
    if (!isFull(list) && position >= 0 && position <= (list->length))
    {
        int i;
        //맨뒤부터 position까지 한칸씩 뒤로 이동
        for (int i = (list->length - 1); i >= position; i--)
            list->list[i + 1= list->list[i];
 
        list->list[position] = item;
        list->length++;
 
    }
}
 
void addLast(ArrayList *list, element item)
{
    if (!isFull(list))
    {
        list->list[list->length] = item;
        list->length++;
    }
}
 
void addFirst(ArrayList *list, element item)
{
    if (!isFull(list))
    {
        for (int i = (list->length - 1); i >= 0; i--)
            list->list[i + 1= list->list[i];
        
        list->list[0= item;
        list->length++;
    }
}
 
void clear(ArrayList *list)
{
    for (int i = 0; i < list->length; i++)
        list->list[i] = 0;
 
    list->length = 0;
}
 
element deletePos(ArrayList *list, int position)
{
    int i;
    element item;
    
    if (position < 0 || position >= list->length)
    {
        printf("Position error!\n");
        return 0;
    }
 
    item = list->list[position];
 
    for (int i = position; i < (list->length); i++)
        list->list[i] = list->list[i + 1];
 
    list->length--;
    return item;
}
 
void replace(ArrayList *list, int position, element item)
{
    list->list[position] = item;
}
 
int isInList(ArrayList *list, element item)
{
    for (int i = 0; i < list->length; i++)
    {
        if (list->list[i] == item)
            return 1;
    }
 
    return 0;
}
 
int getEntry(ArrayList *list, int position)
{
    return list->list[position];
}
 
int getLength(ArrayList *list)
{
    return list->length;
}
 
void display(ArrayList *list)
{
    for (int i = 0; i < list->length; i++)
        printf("%d ", list->list[i]);
 
    printf("\n");
}
 
cs

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "ArrayList.h"
 
ArrayList list;
int num = 0;
 
int main()
{
    init(&list);
 
    add(&list, 0100);
    add(&list, 190);
    add(&list, 280);
    add(&list, 350);
    add(&list, 460);
    add(&list, 540);
    display(&list);
    printf("길이: %d\n",getLength(&list));
    getEntry(&list, 1);
    printf("1번위치: %d\n", getEntry(&list, 1));
    printf("4존재? %d\n",isInList(&list, 4));
    printf("40존재? %d\n", isInList(&list, 40));
 
    replace(&list, 370);
    replace(&list, 550);
    display(&list);
 
    deletePos(&list, 3);
    display(&list);
    printf("길이: %d\n", getLength(&list));
 

    addFirst(&list, 1);
    addLast(&list, 1);
    display(&list);

    printf("길이: %d\n", getLength(&list));
    clear(&list);
    display(&list);
    printf("길이: %d\n", getLength(&list));
    printf("Full? %d\n",isFull(&list));
    printf("Empty? %d\n",isEmpty(&list));
 
    clear(&list);
 
    return 0;
}
cs

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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 31
글 보관함