level 3
学习严蔚敏数据结构的时候,要知道一点,严蔚敏的代码叫做伪代码,虽然形式上很像C语言,但实际上严老也只是把简单的用c语言写了,比较复杂的地方都用伪代码代替了,这些伪代码大部分是缺少了一些头文件,定义之类的,往前翻翻能找到。
接下来要说的就是这个具体问题:equal这个参数,其实是一个函数指针,它期待传入一个比较函数,用来比较e和list中的元素是否相等,相等则返回。其实在简化版里的数据结构实现中是没必要实现这个locate函数的,因为正常来写我们都会这么写
if (e == L.elem[i])
我们默认为找到元素就是两个值相等。但是对于复杂的线性表,它存储的不简简单单是整数那么简单,为了做到通用性,线性表在设计的时候会让用户自己设计比较函数,来定义这个相等的行为。举个例子,你线性表存的是字符串。但是你希望找到字符串中第一个字母等于e的第一个字母的就可以了。所以这个时候你就可以写
compare(char *a, char *b)
{
if (a[0] == b[0])
.....
}
所以你的迷茫在于参数问题。
总结起来无非两点:
1、equal是一个函数,不是一个具体的值
2、compare函数有两个参数,具体调用的时候一个传入e一个传入列表中的某个值,用来判断是否相等
2018年04月04日 03点04分


