码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构算法C语言实现(三十二)--- 9.1静态查找表

时间:2016-07-12 11:41:29      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:

  一、简述

  静态查找表又分为顺序表、有序表、静态树表和索引表。以下只是算法的简单实现及测试,不涉及性能分析。

  二、头文件

技术分享
 1 /**
 2 author:zhaoyu
 3 date:2016-7-12
 4 */
 5 #include "6_3_part1_for_chapter9.h"
 6 typedef struct {
 7     int key;
 8 }SElemType;
 9 //静态查找表的顺序储存结构
10 #define ElemType SElemType
11 #define KeyType int
12 typedef struct {
13     ElemType *elem;//数据元素储存空间基址,0号留空
14     int length;//表长度
15 }SSTable;
16 //这里简化了键值
17 //实现 EQ
18 bool EQ(int a, int b)
19 {
20     return a==b?true:false;
21 }
22 bool LT(int a, int b)
23 {
24     return a<b?true:false;
25 }
26 //实现创建 SSTbale
27 void createSSTable(SSTable &T)
28 {
29     //先输入长度 length
30     //再输入 length 个 元素
31     scanf("%d", &T.length);
32     T.elem = (ElemType *)malloc((T.length + 10)*sizeof(int));
33     for (int i = 1; i <= T.length; i++)
34     {
35         scanf("%d", &T.elem[i].key);
36     }
37 }
38 
39 /**
40 algorithm 9.1
41 */
42 int Search_Seq(SSTable ST, KeyType key)
43 {
44     //在顺序表 ST 中顺序查找关键值等于key的数据元素,
45     //若找到返回元素在表中位置,否则返回0
46     ST.elem[0].key = key;
47     int i;
48     for (i = ST.length; !EQ(ST.elem[i].key, key); --i);
49     return i;
50 
51 }
52 
53 /**
54 algorithm 9.2
55 */
56 int Search_Bin(SSTable ST, KeyType key)
57 {
58     //在有序表 ST 中折半查找其关键字等于 key 的数据元素
59     //找到返回其位置,否则返回 0
60     int low = 1;
61     int high = ST.length;
62     while (low <= high)
63     {
64         int mid = (low + high) / 2;
65         if (EQ(key, ST.elem[mid].key))
66         {
67             return mid;
68         }
69         else if (LT(key, ST.elem[mid].key))
70         {
71             high = mid - 1;
72         }
73         else
74         {
75             low = mid + 1;
76         }
77     }
78     return 0;
79 }
9_1_1.h

 

  三、CPP文件

技术分享
1 #include "9_1_1.h"
2 int main(int argc, char const *argv[])
3 {
4     SSTable T;
5     createSSTable(T);
6     printf("Search 9:\t%d\n", Search_Seq(T, 9));
7     printf("Search 3:\t%d\n", Search_Bin(T, 3));
8     return 0;
9 }
9_1_1.cpp

 

  四、测试

  技术分享

数据结构算法C语言实现(三十二)--- 9.1静态查找表

标签:

原文地址:http://www.cnblogs.com/zhaoyu1995/p/5661116.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!