顺序查找中的几个问题

2024-11-18 10:03:47
推荐回答(3个)
回答(1):

代码需要通过编译的话,传进search_Seq函数的ST参数必须满足elem指针指向一块分配好的内存空间,这一块内存空间可以是通过数组声明得到,也可以通过calloc或者malloc函数分配空间得到,这样就可以以数组形式来进行使用。
如果只是声明一个指针并传进去,那样会报错的

key成员的问题,应该是指结构体ElemType中存在一个叫key的成员,参考如下:
typedef struct {
KeyType key;
} ElemType;

哨兵的话,指的是for循环里面的那个i

回答(2):

第一个问题,elem是指针,利用指针可以开辟一个数组空间,本题就是这样,然后指针就可以像数组一样通过下表访问指定位置的元素了。
第二个问题,ST.elem[i].key 中的 key 是关键字的意思,进行顺序查找一般都是对关键字 key 进行查找。
第三个问题,所谓哨兵,就是使程序能够少写一些 if 语句,一个 for 循环搞定。

回答(3):

一个数组的数组名就相当于一个数组的指针,所以指针也可向数组访问元素一样访问其空间内的成员;st.elem[i].key的意思是 elem是st结构体中的成员,同时elem也是个结构体,他的成员是key;哨兵用于免去查找时每一步都需要检查是否遍历完毕的操作