示例#1
0
int main(int argc, char** argv){
//int main(){
    int i;
    if(argc < 3) {printf("wrong input of arguments!\n format: input_file output_file\n"); return 2;}
    freopen(argv[2], "w", stdout);
    int n = get_length(argv[1]);
    //int n = get_length("input.txt");
    int **M = (int**)malloc(n*sizeof(int*));
    int **D = (int**)malloc(n*sizeof(int*));
    int **save = (int**)malloc(n*sizeof(int*));
    for(i = 0; i < n; i++){
        M[i] = (int*)malloc(n*sizeof(int));
        D[i] = (int*)malloc(n*sizeof(int));
        save[i] = (int*)malloc(n*sizeof(int));
    }
    int* R = (int*)malloc(n*sizeof(int));
    int* S = (int*)malloc(n*sizeof(int));
    
    input_(argv[1], save, n);
    //input_("input.txt", save, n);
    int al = check_data(save, n);
    //output_(1,save,n);
    if(al == 1) {printf("wrong data input\n"); free_all(save, M, D, R, S, n); return 2;}
    int H[1];
    //get_data_from_within(save, "output.txt");
    int cur_pos[1];
    int record[1];
    record[0] = get_first_record(save, M, D, R, S, n, cur_pos, H);  
    if(record[0] == -1) {
        return 1;
    }
    backtracking(save, M, D, R, S, n, record, H);
    //printf("Got here!\n");
    printf("%d\n", H[0] + V[record[0]].L);
    make_cycle(record[0]);
    free_all(save, M, D, R, S, n);
    return 0;
}
示例#2
0
int main(void)
    {
    List *addr_list = NULL;
    DLL_Return ExitCode;

    if(DLL_CreateList(&addr_list) == NULL)
        {
        fputs("Fatal memory error\n", stderr);
        exit(EXIT_FAILURE);
        }

    if((ExitCode = DLL_InitializeList(addr_list, sizeof(NameAddr)))
      != DLL_NORMAL)
        {
        (void)(ExitCode == DLL_ZERO_INFO
          && fputs("Size of address record is zero.\n\n", stderr));
        (void)(ExitCode == DLL_NULL_LIST
          && fputs("addr_list points to a NULL.\n\n", stderr));
        exit(EXIT_FAILURE);
        }

    printf("%s\n", DLL_Version());

    for(;;)
        {
        switch(main_menu())
            {
            case 1:
                enter(addr_list);
                break;
            case 2:
                insert(addr_list);
                break;
            case 3:
                update(addr_list);
                break;
            case 4:
                search(addr_list);
                break;
            case 5:
                display_all(addr_list);
                break;
            case 6:
                get_current_record(addr_list);
                break;
            case 7:
                delete_current_record(addr_list);
                break;
            case 8:
                get_prior_record(addr_list);
                break;
            case 9:
                get_next_record(addr_list);
                break;
            case 10:
                get_first_record(addr_list);
                break;
            case 11:
                get_last_record(addr_list);
                break;
            case 12:
                swap_record(addr_list);
                break;
            case 13:
                save(addr_list);
                break;
            case 14:
                load(addr_list);
                break;
            case 15:
                number_of_records(addr_list);
                break;
            case 16:
                DLL_DestroyList(&addr_list);

#if	DEBUG
                if(addr_list != NULL)
                    {
                    fputs("Error: List was not destroyed.\n", stderr);
                    exit(EXIT_FAILURE);
                    }
#endif

                exit(EXIT_SUCCESS);
            }
        }

    return 0;
    }