// // Main // int rmdupMain(int argc, char** argv) { Timer* pTimer = new Timer("sga rmdup"); parseRmdupOptions(argc, argv); rmdup(); delete pTimer; if(opt::numThreads > 1) pthread_exit(NULL); return 0; }
int main() { node_t tail = {3, NULL}; node_t node7 = {1, &tail}; node_t node6 = {3, &node7}; node_t node5 = {1, &node6}; node_t node4 = {3, &node5}; node_t node3 = {2, &node4}; node_t node2 = {3, &node3}; node_t head = {1, &node2}; rmdup(&head); node_t *node = &head; while (node) { printf("%d\n", node->data); node = node->next; } return 0; }
/* read TABE item bank file added Q3 2010 */ int getItems (char inPar[], struct item_info items[], int n_items, int *n_obj, int objID[], int n_obj_items[], int *n_new_obj, int new_objID[]) { FILE *fp; /* for getPar file */ int i, j; double ad, b, c3; char aLine[lineLen_max]; int lineLen = 0, n_line = 0; int n_objs; int n_new_objs; /* collpased obj */ int *indx; int *tmp; fp = fopen(inPar, "r"); if ( fp == NULL ) { if (LOG_FILE_FLAG) fprintf (log_file, "Couldn't open par file: %s \n", inPar); return GETPAR_FAILURE; } /* get max line length from all lines in par file */ i = 0; n_objs = 0; n_new_objs = 0; fgets (aLine, lineLen_max,fp); /* get the first line */ /* * lineLen_max must be >= the line width of par files ***below read items@todo */ while (getCurrentline (aLine, lineLen_max, fp) > 2 ) { items[i].item_no = i+1; /* for MC items */ strtok(aLine,","); /* skip first obs */ items[i].item_id = atoi(strtok(NULL,",")); ad = atof(strtok(NULL,",")); b = atof(strtok(NULL,",")); c3 = atof(strtok(NULL,",\n")); /* note */ /* convert 3PL to 2PPC metric */ ad = 1.7*ad; b = ad*b; items[i].parameters = (double *) malloc(3*sizeof(double)); if (items[i].parameters == NULL) { if (LOG_FILE_FLAG) fprintf (log_file, "Error: malloc item[%d].parameters failed! \n", i); return GETPAR_FAILURE; } items[i].parameters[0] = ad; items[i].parameters[1] = b; items[i].parameters[2] = c3; items[i].obj_id = atoi(strtok(NULL,",")); items[i].new_obj_id = atoi(strtok(NULL,",")); /* collapsed objective IDs */ items[i].org_psg_id = atoi(strtok(NULL,",")); /* read original CTB_Passage_ID for data QA purpose */ items[i].psg_id = atoi(strtok(NULL,",")); /* read new ctb_passage_id */ items[i].item_order = atoi(strtok(NULL,",")); items[i].enemy = atoi(strtok(NULL,",")); /* read enemy item, put enemy after item order in item bank */ strcpy(items[i].obj_title,strtok(NULL,",")); // printf(" %d %d %d %d \n", items[i].item_id, items[i].obj_id, items[i].psg_id, items[i].item_order ); items[i].adm_flag = 1; items[i].rwo = 9; /* initialize rwo to 9 */ if (i == 0) { /* item bank must be sorted by obj_id */ objID[n_objs] = items[i].obj_id; } else if (( i > 0) && (items[i].obj_id != items[i-1].obj_id)){ n_objs++; objID[n_objs] = items[i].obj_id; } else {} n_obj_items[n_objs]++; if (i == 0) { /* note duplicated new_objID is possible as item bank was not sorted by new_ obj_id */ new_objID[n_new_objs] = items[i].new_obj_id; } else if (( i > 0) && (items[i].new_obj_id != items[i-1].new_obj_id)){ n_new_objs++; new_objID[n_new_objs] = items[i].new_obj_id; } else {} i++; /* number of items from par file */ } /* end while */ *n_obj = n_objs + 1; if (i != n_items) { if (LOG_FILE_FLAG) fprintf (log_file, "Error: Number of items in Par are different from that in : %s \n", inPar); return GETPAR_FAILURE; } n_new_objs++; rmdup(new_objID, &n_new_objs); /* removed duplicated new_objID */ indx = (int *) malloc(n_new_objs*sizeof(int)); tmp = (int *) malloc(n_new_objs*sizeof(int)); indInt(n_new_objs, new_objID, indx); /* sort new obj ID */ for (i = 0; i < n_new_objs; i++) { tmp[i] = new_objID[indx[i]]; } for (i = 0; i < n_new_objs; i++) { new_objID[i] = tmp[i]; } *n_new_obj = n_new_objs; /* for (i = 0; i < n_new_objs; i++) { printf("%d %d \n ", i, new_objID[i]) ; } */ free(indx); free(tmp); fclose(fp); return GETPAR_OK; /* end of read Par file */ }