// alpha sort the keys void packet_sort(packet_t p) { int keys = packet_keys(p); if(!keys) return; util_sort(p->js,keys,sizeof(unsigned short)*4,pkeycmp,p->json); }
/* *根据已有的矩阵和相关信息产生子矩阵 *m,n为子矩阵的长和宽 *row 和 colum数组存放子矩阵为大矩阵的哪些行和列,最小为1行1列,自动排序,重复报错 *生成的子矩阵放在新申请的子矩阵中 *有错返回NULL *Error */ SubMatrix* stor_subMatrix(Matrix *sour, int m, int n, int *row, int *colum) { int i,j; SubMatrix* p = NULL; if (sour == NULL) { return NULL; } p = (SubMatrix *)malloc(sizeof(SubMatrix)); if (p == NULL) { //Error return NULL; } p->row = (int *)malloc(sizeof(int)*m); util_sort(row, 0, m - 1); for (i = 0; i < m-1; i++) { if (row[i] == row[i + 1]) { //Error return NULL; } } if (p->row == NULL) { //Error return NULL; } memcpy(p->row, row, m * sizeof(int)); p->colum = (int *)malloc(sizeof(int)*n); util_sort(colum, 0, n - 1); for (i = 0; i < n - 1; i++) { if (colum[i] == colum[i + 1]) { //Error return NULL; } } if (p->colum == NULL) { //Error return NULL; } memcpy(p->colum, colum, n * sizeof(int)); p->sour = sour; p->sub = NULL; if (!stor_createMatrix(&(p->sub), m, n)) { //Error return NULL; } for(i = 0; i<m; i++) { for(j = 0; j<n; j++) { if (!stor_entry(sour, row[i] - 1, colum[j] - 1)) { //Error return NULL; } *stor_entry(p->sub, i, j) = *stor_entry(sour, row[i]-1, colum[j]-1);//Todo 检测溢出问题 } } return p; }