C언어 배열 추가 삭제 탐색 질문 입니다.

조회수 3292회

배열의 크기를 10만으로 잡고 main 창에서 insert함수를 사용하여 수를 삽입하는데 들어가지 않고 오류창입 뜹니다. 제가 정의한 insert함수에 틀린 부분을 잡아주세요

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

typedef int Element;
Element data[MAX_LIST_SIZE];
int length = 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 ){
            return i;
        }
    }
    return -1;
}

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


void main()
{
    init_list();
    insert(0, 10);
    print_list();
}
  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 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("포화상태 & 오류 || 삽입 위치 오류 입니다.");
    }
    

    두번째 줄에서 is_full은 함수로 정의하셨는데 ()를 빼먹으셨네요

    if(is_full()==0 && pos >= 0 && pos<=length)
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

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

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

(ಠ_ಠ)
(ಠ‿ಠ)