为什么动态申请数组空间的结果比直接申请占用的还大
查看原帖
为什么动态申请数组空间的结果比直接申请占用的还大
861113
wanan2203ouchengli楼主2023/8/4 18:19
#include<stdio.h>
#include<stdlib.h>
int b = 1;

typedef struct n {
	int a;
	struct n* l,* r;
}n,*N;

void XJL(N& l,int **a,int p,int q, int b) {//
	if (b == 0) {
		l = NULL;
		return;
	}
	else {
		l = (N)malloc(sizeof(n));
		l->a = b;
		l->l = NULL;
		l->r = NULL;
		XJL(l->l, a, p,2, a[b-1][0]);//
		XJL(l->r, a, p,2, a[b-1][1]);
	}
}

void ZBL(N l, int e) {//
	if (l == NULL) {
		return;
	}
	else {
		if(e == 1)
		printf("%d ", l->a);
		ZBL(l->l,e);
		if (e == 2)
		printf("%d ", l->a);
		ZBL(l->r,e);
		if (e == 3)
		printf("%d ", l->a);
	}
}

int main() {
	int n;
	N l;
	scanf("%d", &n);
	int** a = (int**)malloc(sizeof(int*) * n);
	for (int i = 0; i < n; i++)
	{
		a[i] = (int*)malloc(sizeof(int) * 2);
	}
    //之前这里我直接申请a[100000]来用
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < 2; j++) {
			scanf("%d",&a[i][j]);
		}
	}
	XJL(l, a, n,2,b);
	ZBL(l,1); printf("\n");
	ZBL(l,2); printf("\n");
	ZBL(l,3); printf("\n");
	return 0;
}
2023/8/4 18:19
加载中...