##一起talk C栗子吧(第二十四回:C语言实例-顺序查找)
各位看官们,大家好,上一回中咱们说的是与队列相关的例子,这一回咱们说的例子是:顺序查找。闲话休提,言归正转。让我们一起talk C栗子吧!
看官们,在编写程序中,我们经常需要查找我们想要元素。就好比你想要在互联网中查找什么东西时,肯定会使用百度或者google去搜索。
查找是最常用使用的功能,我们今天就来说说查找的方法:顺序查找。为了让大家容易理解查找方法,我们把查找的范围限定为某些容器,这些容器可以是我们前面说过的链表,栈,队列 。查找的内容就是这些容器中的某个元素。
有了我们约定的这些前提条件,我们来说说什么是顺序查找方法:依次遍历整个容器,在遍历过程中比较查找的内容与容器中的元素,如果查找的内容与容器中的某个元素相同,那么表示已经从容器中查找到想要的内容了。我们可以称其为:查找成功。如果查找的内容与容器中的所有元素都不相同,那么表示容器中没有我们想要查找的内容。我们可以称其为:查找失败。
顺序查找的方法,思路比较简单。我们在日常生活中也使用。举个日常生活的例子:回家时需要使用钥匙开门,这时就去衣服口袋里找。先是上衣的口袋,然后是裤子的口袋,所有的口袋都找遍了,还是没有找到钥匙。钥匙去哪儿了?这还用问,肯定是丢了呀。哈哈!这个例子中,查找的容器是衣服上的口袋;查找的对象是钥匙;从上衣口袋到裤子口袋依次找钥匙的过程,就是一个顺序查找的方法。顺序查找虽然简单,但是它的效率低。如果容器的容量小一些还好,如果容器容量大的话,那将要使用很长的时间去遍历容器。回到刚才哪个例子中,查找衣服上所有的口袋相对来说还算是容易一些,毕竟衣服上的口袋不是很多,很快就能查找完。如果让你去查找一天内走过的所有地方,那你就去慢慢查找吧,而且能不能找到钥匙还是个未知数。找不到钥匙该怎么办呀?重新配一把钥匙呗,哈哈!
看官们,详细的代码放如下所示,请大家参考:
1 /* **************************
2 * Source file of Sequential Search
3 * *************************/
4
5 #include<stdio.h>
6
7 #define SUCCESS 0
8 #define FAILE 1
9
10 #define SIZE 10 //容器大小定义为10
11
12 typedef int Elmt; //把int当作容器中元素的类型,实际中可以使用其它的类型或者自己定义一个元素类型
13
14 //顺序查找函数,头文件的内容比较简单,因此把头文件和源文件放在一起
15 int SeqSearch(Elmt* a,Elmt e)
16 {
17 int i =0;
18 int flag = 0;
19
20 if(NULL == a)
21 return FAILE;
22
23 while(i < SIZE )
24 {
25 if(e == *(a+i))
26 {
27 flag = 1;
28 break;
29 }
30
31 i++;
32 }
33
34 if(1 == flag)
35 {
36 flag = 0;
37 return SUCCESS;
38 }
39 else
40 return FAILE;
41
42 }
43
44 int main()
45 {
46 int i= 0;
47 int f = 0; //想要查找的内容
48 Elmt array[SIZE] = {0}; //简单起见,使用数组做为容器
49
50 while(i++ < SIZE) //初始化容器
51 array[i-1] = i;
52
53 printf("the elmt of array is : ");
54 i=0;
55 while(i < SIZE)
56 printf("%d ",array[i++]);
57 printf(" \n");
58
59 f = 5; //确定想要查找的内容
60 //f = 59; //确定想要查找的内容
61 if(!SeqSearch(array,f))
62 printf("%d is found in array\n",f);
63 else
64 printf("%d is not found in array\n",f);
65
66 return SUCCESS;
67 }
写代码的关键就是遍历容器,遍历方法与所选的容器有关。我们在前面的章回中都说过,而且有例子,如果 大家忘记的话,可以查看前面章回的内容。因此在这里就不多说了,以免大家觉得我烦人。哈哈!
各位看官,关于顺序查找的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。