对于学习数据结构(用c语言描述)怎样学(有什么方法)吗?萌新用的数据结构那本书是王晓东第三版的
1个回答
展开全部
多看代码,多画图。
比如一个链表,你就把它画成链的样子,指针什么直接标标上去。如果是树,那就画一棵树。(网上数据结构的教程都有图的)
然后就是分析每一行代码的作用,可以把教材上的代码一行行打下来,边打边理解,写一些注释。
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)
比如一个链表,你就把它画成链的样子,指针什么直接标标上去。如果是树,那就画一棵树。(网上数据结构的教程都有图的)
然后就是分析每一行代码的作用,可以把教材上的代码一行行打下来,边打边理解,写一些注释。
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)
更多追问追答
追问
好的,多谢
追答
图中的t是一个指针,指向的是一个int*。
这么理解,t[0]就是*(t+0)就是一个int指针,t[1]就是*(t+1)也是一个int指针
初始化之后,这些t[0...r]的指针都指向数组的头元素(就是一个一维数组的头元素),然后也要把它们初始化一下
(可以采纳一下吗)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询