我是靠谱客的博主 刻苦衬衫,最近开发中收集的这篇文章主要介绍顺序线性表的查找操作(完整代码),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

线性表的查找操作:线性表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);
}

运行结果:

最后

以上就是刻苦衬衫为你收集整理的顺序线性表的查找操作(完整代码)的全部内容,希望文章能够帮你解决顺序线性表的查找操作(完整代码)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部