Пример #1
0
// 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);
}
Пример #2
0
/*
 *根据已有的矩阵和相关信息产生子矩阵
 *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;
}