第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 【顺序表】顺序表定位

【顺序表】顺序表定位

时间:2020-05-19 06:02:12

相关推荐

【顺序表】顺序表定位

顺序表定位操作listFind(SeqList *head,dataType x)的功能是:在线性表中查找是否存在数据元素x,如果存在,则返回线性表中和x值相等的第一个数据元素的符号(序号从0开始);如果不存在,则返回-1

题目分析:

在学习C语言的时候,相信大家应该都做过这样一个题:判断数组a[]中是否存在元素x,若存在,则返回下标,否则返回-1。是否有印象呢???

这两个题本质一模一样,唯一不同的是本题利用“顺序表”将数组a[]包装了起来。在遍历的过程中,拿顺序表的数据去和x比对,若相同,返回当前下标值,若到了最后一个数据元素都不相同,就返回-1

考点:

1.遍历顺序表

2.挨个比对数据元素

代码实现:

[prism lang="c"]#include<stdio.h>const int MAX = 20;//设定这个顺序表的最大空间为20,也就是最多可以存20个int数typedef int dataType; //数据类型为int型//声明顺序表结构体typedef struct seqlist{dataType a[MAX]; //声明这条顺序表存储数据的工具————数组(一段连续的地址空间,所以我们称这种方式为顺序存储)int size;//数据元素个数}SeqList;//初始化顺序表void listInitiate(SeqList *seqlist){seqlist->size = 0; //刚创建顺序表之后的数据个数为0}//往顺序表中放10个数void listOriginal(SeqList *seqlist){for (int i = 0; i < 10; i++){seqlist->a[i] = i*3;seqlist->size++; //多了一个数据元素,所以size得+1;}}//在顺序表中查找数据,返回一个整型数int listFind(SeqList* seqlist, dataType data){for (int i = 0; i < seqlist->size; i++) //从0到size,遍历顺序表中的所有元素{if (seqlist->a[i] == data) //如果有相同数据,返回下标return i;}return -1; //比对结束都没有找到相同数据,返回-1}//专门用来遍历输出的函数void listPrint(SeqList *seqlist){printf("顺序表:");for (int i = 0; i < seqlist->size; i++)printf("%d ", seqlist->a[i]);printf("\n");}//主函数int main(){SeqList seqlist; //声明顺序表listInitiate(&seqlist); //分配实地空间listOriginal(&seqlist); //往顺序表里面放10个数listPrint(&seqlist);//打印顺序表所有数据int number;printf("请输入要查找的数:");scanf("%d",&number);if( listFind(&seqlist,number) != -1)printf("该数在顺序表中的下标值为:%d\n",listFind(&seqlist,number));elseprintf("顺序表中不存在该数据元素\n");return 0;}[/prism]

运行结果:

(1)能找到相同数据

(2)不能找到相同数据

代码编译器:Dev-C++

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。