对于学习数据结构(用c语言描述)怎样学(有什么方法)吗?萌新用的数据结构那本书是王晓东第三版的
发布网友
发布时间:2022-04-28 13:47
我来回答
共1个回答
热心网友
时间:2023-10-11 06:08
多看代码,多画图。
比如一个链表,你就把它画成链的样子,指针什么直接标标上去。如果是树,那就画一棵树。(网上数据结构的教程都有图的)
然后就是分析每一行代码的作用,可以把教材上的代码一行行打下来,边打边理解,写一些注释。
malloc2d(r, c):为2d(二维)int数组(大小为r*c)分配空间
malloc(r * sizeof(int*)):有r行,每行头元素指针都需要储存,一个指针要占用sizeof(int*)的空间,r个就需要乘以r
前面的(int**)就是说t是一个指针,指向(int*) 这个指针t是二维数组的头元素(然而这个二维数组空间可能是分散的),*t即t[0]的类型是int*,是一个一维数组头元素的指针(这个应该容易理解)t[0][0]就是0行0列,是一个int。你可以这样赋值:t[0][0]=1
ps: malloc返回值是(void*)类型,因此需要加上(int**)进行强制类型转换,你可能会见到(int)1.5,就是类似的(不过指针进行类型转换是不会丢失数据的)
for语句就是对每一行进行分配空间。
t[i] = (int*)malloc(c * sizeof(int)) 这个就是对第i行分配,一个int要占用sizeof(int)的空间,c个就是c*sizeof(int)
热心网友
时间:2023-10-11 06:08
多看代码,多画图。
比如一个链表,你就把它画成链的样子,指针什么直接标标上去。如果是树,那就画一棵树。(网上数据结构的教程都有图的)
然后就是分析每一行代码的作用,可以把教材上的代码一行行打下来,边打边理解,写一些注释。
malloc2d(r, c):为2d(二维)int数组(大小为r*c)分配空间
malloc(r * sizeof(int*)):有r行,每行头元素指针都需要储存,一个指针要占用sizeof(int*)的空间,r个就需要乘以r
前面的(int**)就是说t是一个指针,指向(int*) 这个指针t是二维数组的头元素(然而这个二维数组空间可能是分散的),*t即t[0]的类型是int*,是一个一维数组头元素的指针(这个应该容易理解)t[0][0]就是0行0列,是一个int。你可以这样赋值:t[0][0]=1
ps: malloc返回值是(void*)类型,因此需要加上(int**)进行强制类型转换,你可能会见到(int)1.5,就是类似的(不过指针进行类型转换是不会丢失数据的)
for语句就是对每一行进行分配空间。
t[i] = (int*)malloc(c * sizeof(int)) 这个就是对第i行分配,一个int要占用sizeof(int)的空间,c个就是c*sizeof(int)
热心网友
时间:2023-10-11 06:08
多看代码,多画图。
比如一个链表,你就把它画成链的样子,指针什么直接标标上去。如果是树,那就画一棵树。(网上数据结构的教程都有图的)
然后就是分析每一行代码的作用,可以把教材上的代码一行行打下来,边打边理解,写一些注释。
malloc2d(r, c):为2d(二维)int数组(大小为r*c)分配空间
malloc(r * sizeof(int*)):有r行,每行头元素指针都需要储存,一个指针要占用sizeof(int*)的空间,r个就需要乘以r
前面的(int**)就是说t是一个指针,指向(int*) 这个指针t是二维数组的头元素(然而这个二维数组空间可能是分散的),*t即t[0]的类型是int*,是一个一维数组头元素的指针(这个应该容易理解)t[0][0]就是0行0列,是一个int。你可以这样赋值:t[0][0]=1
ps: malloc返回值是(void*)类型,因此需要加上(int**)进行强制类型转换,你可能会见到(int)1.5,就是类似的(不过指针进行类型转换是不会丢失数据的)
for语句就是对每一行进行分配空间。
t[i] = (int*)malloc(c * sizeof(int)) 这个就是对第i行分配,一个int要占用sizeof(int)的空间,c个就是c*sizeof(int)