由用户指定一个n生成一个n*n的二维数组in heap
创建二维数组:
int createArrayHeap(int ***p,int n);
int ** createArrayHeap(int n);
利用随机数初始化:
Int initArrayHeap(int **p);
打印二维数组:
Int printfArrayHeap(int **p);
释放二维数组:
Int freeArrayHeap(int **p);
Int freeArrayHeap(int ***p);
具体实现代码:
#include <stdio.h>
#include <stdlib.h>
/*
由用户指定一个n 生成一个n*n的二维数组in heap
int createArrayHeap(int ***p,int n);
int ** createArrayHeap(int n);
利用随机数初始化
Int initArrayHeap(int **p);
打印二维数组
Int printfArrayHeap(int **p);
释放二维数组
Int freeArrayHeap(int **p);
Int freeArrayHeap(int ***p);
*/
int createArrayHeap(int ***p, int n)
{
if (p == NULL || n <= 0)
return -1;
int **tmp = NULL; //copy
int i = 0, j = 0;
tmp = (int **)malloc(sizeof(int*)*n);
for (; i<n; ++i)
{
tmp[i] = (int *)malloc(sizeof(int)*n);
for (j = 0; j<n; ++j)
{
tmp[i][j] = rand() % 9000 + 1000;
}
}
*p = tmp; //commit
return 0;
}
int ** createArrayHeap1(int n)
{
if (n <= 0)
return NULL;
int **tmp = NULL; //copy
int i = 0, j = 0;
tmp = calloc(sizeof(int*), n);
for (; i<n; ++i)
{
tmp[i] = calloc(sizeof(int), n);
//memset
for (j = 0; j<n; ++j)
{
tmp[i][j] = rand() % 9000 + 1000;
}
//memset(tmp[i],0,sizeof(int)*n);
}
return tmp;
}
int printfArrayHeap(int **p, int n)
{
int i = 0, j = 0;
for (; j<n; ++j)
{
for (i = 0; i <n; ++i)
{
printf("%d ", p[j][i]);
}
printf("\n");
}
}
int freeArrayHeap(int **p, int n)
{
int i = 0;
for (; i<n; ++i)
{
free(p[i]);
}
free(p);
return 0;
}
int freeArrayHeap1(int ***p1, int n)
{
int **p = *p1;
int i = 0;
for (; i<n; ++i)
{
free(p[i]);
}
free(p);
*p1 = NULL;
return 0;
}
int main(int argc, char **argv)
{
int **p = NULL; //迷途指针 跟丢了
int n = 8;
//p = createArrayHeap1(n);
createArrayHeap(&p, n);
printfArrayHeap(p, n);
freeArrayHeap(p, n);
printfArrayHeap(p, n);
//p = createArrayHeap1(n);
return 0;
}