C언어 배열 질문이요~

조회수 1516회

C언어 array_list find 문에서 어떻게 해야지 결과 값이 나오는 건지 알려주세요~ 배열에 값을 추가하고 탐색하면 쓰레기 값이 나오네요

아 그리고 공부하면서 처음로 실행시간을 측정해보는데 어디서부터 어디까지 실행시간을 측정하는 건가요?

#include <stdio.h>
#include <stdlib.h>
#define MAX_LIST_SIZE 100000

typedef int Element;
Element data[MAX_LIST_SIZE];
int length = 0;
    int pic = 0;
    int pic2 = 0;
    int add_num = 0;
    int place = 0;

void error(char *str)
{
    fprintf(stderr, "%s\n", str);
    exit(1);
};

void init_list()                 {length = 0; }
void clear_list()                {length = 0; }
int is_empty()                   {return length == 0; }
int is_full()                    {return length == MAX_LIST_SIZE; }
int get_entry(int num)           {return data[num]; }
void replace(int num, Element e) {data[num] = e; }
int size() {return length; }

void insert(int pos, int e ){
    if(is_full()==0 && pos >= 0 && pos<=length){
        for(int i = length ; i>pos ; i--){
            data[i] = data[i-1];
        }
        data[pos] = e;
        length++;
    }
    else error("포화상태 & 오류 || 삽입 위치 오류 입니다.");
}

void delete(int pos)
{
    if(is_empty()==0 && 0 <= pos && pos < length){
        for(int i=pos+1 ; i < length ; i++ ){
            data[i-1] = data[i];
            length--;
        }
    }
    else error("공백상태 오류 || 삭제 위치 오류");
}

int find (Element e)
{
    for(int i = 0 ; i < length ; i++){
        if(data[i] == e ){
            printf("%d",data[i]);
        }
        else error("입력 오류 ");
    }
}

void print_list(){
    for(int i = 0 ; i < length ; i++){
        printf("%2d, ", data[i]);
    }
    printf("\n");
}

void prompt_2(){
    printf(" 노드를 추가 or 삭제 할 위치를 선택하세요\n");
    printf(" 1. 맨 앞  2. 맨 뒤  3. 위치 선택\n");
    printf(" 메뉴를 선택하세요 : ");
    printf("\n");
}


void main(){   
    /*
    do{
        prompt_1();
        scanf("%d",&pic);
        if(pic == 1){
           for 
        }
        /*if(pic == 2){
            prompt_2();
            delete();
        }
        if(pic == 3){
            find();
        }
        if(pic == 4){
            printf("현재 배열 상태 : ");
            print_list();
        }
    }while(pic != 5);
    */
    while (1) {
        printf("실행할 동작을 선택\n");
        printf("    1. 노드추가  2. 노드 삭제 3. 노드 검색 4.노드 출력 5. 종료 \n 메뉴를 선택하세요 : ");
        scanf("%d", &pic);

        if (pic >= 1 && pic != 5) {
            switch (pic) {
                case 1 :

                    printf("삽입할 수 설정 : ");
                    scanf("%d", &add_num);
                    printf("삽입할 위치를 선택하시오\n");
                    printf("1. 맨 앞, 2. 맨뒤, 3.사용자 위치 설정 : ");
                    scanf("%d", &pic2);
                    if(pic2 == 1){
                        insert(0,add_num);
                    }
                    else if(pic2 == 2){
                        insert(length,add_num);
                    }
                    else if(pic2 == 3){
                        printf("삽입할 위치를 설정 (0~ ) : ");
                        scanf("%d", &place);
                        insert(place,add_num);
                    }

                    printf("삽입되었습니다.\n\n");

                    break;
                case 2 :
                    printf("제거할 위치를 설정 (0~ ) : ");
                    scanf("%d", &place);
                    delete(place);

                    printf("제거되었습니다.\n\n");
                    break;
                case 3 :
                    printf("검색 위치를 설정 : ");
                    scanf("%d",&place);
                    find(place);
                    break;
                 case 4 :
                    printf("\n");
                    print_list();
                    break;
                default :
                    printf("유효하지 않은 값입니다. 다시 입력해주십시오.\n\n");
                    break;
            }
        }
        else if(pic == 5)
        break;
    }


}










  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • void delete(int pos)
    {
        if(is_empty()==0 && 0 <= pos && pos < length){
            for(int i=pos+1 ; i < length ; i++ ){
                data[i-1] = data[i];
            }
            length--;
        }
        else error("공백상태 오류 || 삭제 위치 오류");
    }
    
    void find (Element e)
    {
        for(int i = 0 ; i < length ; i++){
            if(data[i] == e ){
                printf("index : %d\n", i);
            }
        }
    }
    

    시간측정은 함수별로 해보세요~ 어차피 메인은 무한루프니까 의미없을테구요

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)