算法的写就,与小学的解应用题很像。应用题会给出已知条件,问题,让你分析已知条件,利用公式或者定理来解决问题,解除答案。函数的写法是如此相似。
看看函数的结构体:返回值类型 函数名(参数列表){函数体}
返回值类型是最终答案的数据类型,函数名代表解决的什么问题,参数列表表示已知条件,函数体就是需要我们编写的解题步骤。
拿线性表的定位运算LocateSeqlist(SeqList L,DataType x)来分析。定位运算的功能是查找出线性表L中值等于x的结点序号的最小值,当找不到值为x的结点时,返回结果0.
从功能描述就已知条件:线性表L和x的值已知。线性表L已知就是说线性表相应的属性,比如长度,表中各个结点的值,都是已知的。
求解结果是:某结点序号。
已知分析:
1、我们知道线性表是存储在数组中的,因此下标i与长度L.length的关系为:min(i)=L.length-1.
2、根据下标,我们就可以知道对应的结点值。
3、要找与x值相等的结点的序号,就要比较值的大小。要找与x值相等的结点的序号的最小值,而不是任意一个相等的值的序号,就要从序号最小的位置的值开始比较,以此向后比较,找到第一个相等的值,取出下标(序号)。返回就得到了结果。
4、从开头到依次比较,就用到了循环。
5、如果循环结束了,还没有找到相等的值,就返回0。“如果”出现了,一定是用到了分支判断语句。if或者switch,根据情况决定。
1. int LocateSeqlist(SeqList L,DataType x) 2. { 3. int i=0; 4. while((i<L.length)&&(L.data[i]!=x)) //在顺序表中查找值为x的结点 5. i++; 6. if(i<L.length) return i+1; //若找到值为x的元素,返回元素的序号 7. else return 0; //未查找到值为x的元素,返回0 8. }