概述
线性表的查找操作:线性表l查找第一个与元素e满足compare()元素的位置。若在,返回其在l中的次序。若不存在则输出不存在 。
int locateelem_sq(sqlist *l,elemtype e,status (*compare)(elemtype, elemtype))
- 第一步设i=1,从线性表第一个位置开始查找。
- 第二步进入循环,判断当前位置的值是否与e相等,并且是否循环到列表最后一个元素。如果未循环到尾部并且值还不相等,则继续循环,寻找符合条件元素的位置。
- 第三步判断,如果当前位置不在线性表尾部,则说明已找到符合的i值。若在线性表尾部,则说明循环到最后一个元素也未找到符合元素。输出不存在;
注意:要在locateelem_sq() 函数前定义compare() 函数.
代码实现:
#include<stdio.h>
#include <stdlib.h> //定义杂项函数及内存分配函数
#include<iostream>
using namespace std;
typedef int elemtype;//将int起别名为 elemtype
typedef struct
{
elemtype *elem;
//存储空间基址
int length;
//当前长度
int listsize;
//当前分配的存储容量
} sqlist;
int compare(elemtype e1, elemtype e2)
{if (e1==e2)
return 1;
else
return 0;
}
//查找操作
int locateelem_sq(sqlist l,elemtype e,int (*compare)(elemtype, elemtype))
{
//在顺序线性表l中查找第一个与元素e满足compare()元素的位置(即返回第一个与e值相等的元素位置)。
//若存在,返回其在l中的次序。若不存在则返回0
int i,*p;
i=1;
p=l.elem;//p为第一个元素的存储位置
while(i<=l.length&&!(*compare)(*p++,e))
//比较函数不相等返回1,前面去反,不相等为0
i++;
if(i<=l.length)
cout<<"一个与 "<<e<<" 相同的值,在线性表的第 "<<i<<" 位";
else cout<<"不存在相同的值";
}
int main()
{
sqlist l;
elemtype b[]={1,4,5,6,10};
l.elem=b;
l.length=sizeof(b)/sizeof(elemtype);
l.listsize=sizeof(elemtype)*l.listsize;
locateelem_sq(l,5,compare);
}
运行结果:
最后
以上就是刻苦衬衫为你收集整理的顺序线性表的查找操作(完整代码)的全部内容,希望文章能够帮你解决顺序线性表的查找操作(完整代码)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复