记录一下在复习过程中碰到的比较巧妙的闪光点,我直呼:大佬是怎么能想到的!
查找
线性结构
顺序查找
- 哨兵的作用:减少条件判断
- for()循环括号中三个语句的使用
先来回忆一下for(①;②;③)
的执行顺序:
- 先执行①
- 然后判断②
②满足,执行循环体;
②不满足,退出循环,执行下一条语句 - ②满足条件,执行完循环体后执行③
- 判断②
typedef struct
{
ElemType *elem;
int len;
}sstable;
int search_seq(sstable s, ElemType key)
{
s.elem[0] = key;//哨兵
for(int i = s.len; s.elem[i] != key; i--);
return i;//i=0,说明未查到该元素
}
s.elem[i]!=key
作为条件判断真的绝。
我自己的算法真的是超罗嗦。
int mysearch(sstable s, ElemType key)
{
for(int i = 1; i <= s.len; i++)
{
if(s.elem[i]==key) return i;
}
return -1;
}