본문 바로가기
대학교/2.데이터구조

배열을 이용한 리스트의 구현

by Jcoder 2017. 4. 21.

과제 1

교재의 자료실에서 소스코드를 다운 받으시오그리고 아래 문제 해결을 위해서 다음 두 파일을 프로젝트에 포함시키시오. 


ArrayList.h, ArrayList.c 


위의 두 파일을 프로젝트에 포함하면 교재의 예제 ListMain.c와 같이 리스트를 사용할 수 있습니다따라서 이를 기반으로 다음의 순서대로 일이 진행되도록 ReportMain.c 함수를 작성하시오.    
 

[1] 리스트를 생성 및 초기화한 다음정수 1부터 20까지 리스트에 저장한다. 

[2] 리스트에 저장된 데이터를 순서대로 출력한다. 

[3] 리스트에 저장된 값을 순차적으로 참조하여 그 합을 계산하여 출력한다. 

[4] 리스트에 저장된 값들 중 2와 3의 공배수에 해당하는 값을 모두 삭제한다. 

[5] 리스트에 저장된 값을 순차적으로 참조하여 다시 그 합을 계산하여 출력한다. 

[6] 마지막으로 리스트에 저장된 데이터를 순서대로 출력한다


< 소스 >

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
#include <stdio.h>
#include "ArrayList.h"
 
int main(void)
{
    /*** ArrayList의 생성 및 초기화 ***/
    List list;
    int data;
    ListInit(&list);
    int sum = 0;
 
    /*** 20개의 데이터 저장 ***/
    for (int i = 1; i <= 20; i++)
    {
        LInsert(&list, i);
    }
 
    /*** 저장된 데이터의 전체 출력 ***/
    printf("현재 데이터의 수: %d \n", LCount(&list));
 
    if(LFirst(&list, &data))    // 첫 번째 데이터 조회
    {
        printf("%d ", data);
        sum += data;
        while (LNext(&list, &data))
        {                            // 두 번째 이후의 데이터 조회
            printf("%d ", data);
            sum += data;
        }
    }
    printf("\n현재 데이터의 합: %d \n", sum);
    printf("\n\n");
 
    /*** 2와 3의 공배수를 탐색하여 모두 삭제 ***/
    if(LFirst(&list, &data))
    {
        if(data % 2 == 0 && data % 3 == 0)
            LRemove(&list);
        
        while(LNext(&list, &data))
        {
            if(data%2 == 0 && data % 3 == 0)
                LRemove(&list);
        }
    }
 
    /*** 삭제 후 저장된 데이터 전체 출력 ***/
    printf("삭제 후 데이터의 수: %d \n", LCount(&list));
    sum = 0;
    if(LFirst(&list, &data))
    {
        printf("%d ", data);
        sum += data;
        while (LNext(&list, &data))
        {
            printf("%d ", data);
            sum += data;
        }
    }
    printf("\n삭제 후 데이터의 합: %d \n", sum);
    printf("\n\n");
    printf("삭제 후 데이터의 수: %d \n", LCount(&list));
    if (LFirst(&list, &data))
    {
        printf("%d ", data);
 
        while (LNext(&list, &data))
            printf("%d ", data);
    }
    printf("\n");
    return 0;
}
cs

ReportMain.c

배열을_이용한_리스트.hwp




'대학교 > 2.데이터구조' 카테고리의 다른 글

• Employee  (0) 2017.04.21
데이터구조 소스  (0) 2017.04.21
하노이타워(그래픽)  (0) 2017.04.21