- 20
- 0
- 约6.11千字
- 约 19页
- 2020-03-26 发布于江西
- 举报
数据结构实验报告
题目:静态查找表的实现
成
绩 ____________________
2014 年 6 月 10 号
静态查找表抽象数据类型的实现 一、设计任务、要求及所用的软件环境或工具:
1.设计任务及要求:用 C 语言实现静态查找表的抽象数据类型 2.软件环境:win7
3.开发工具:C-Free
二、抽象数据类型的实现
1. 题目
采用顺序存储和链式存储为存储结构,实现抽象数据类型 StaticSearchTable。
ADT StaticSearchTable{
数据对象 D:D 是具有相同特性的数据元素的集合。各个数据元素 含有类型相同的关键字,可唯一标识元素的关键字。
数据关系 R:数据元素同属一个集合。
基本操作 P:
Create(ST,n);
操作结果:构造一个含 n 个数据元素的静态查找表 ST。 Destroy(ST);
初始条件:静态查找表 ST 存在。
操作结果:销毁表 ST。
Search(ST,key);
初始条件:静态查找表 ST 存在,key 为和关键字类型相同的 给定值。
操作结果:若 ST 中存在其关键字等于 key 的数据元素,则 函数值为其值或在表中的位置,否则为“空”。
Traverse(ST,Visit());
初始条件:静态查找表 ST 存在,Visit 是对元素操作的应用 函数。
操作结果:按某种次序对 ST 的每个元素调用函数 Visit()一 次且仅一次。一旦 Visit()失败,则操作失败。
}ADT StaticSearchTable
2.存储结构定义
*公用头文件 DS0.h:
#includestdio.h
#includemalloc.h
#includemath.h
*预定义常量和类型
//函数结果状态代码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
typedef int Status;
typedef int KeyType;
typedef float KeyType;
typedef char KeyType;
typedef int ElemType;
typedef ElemType TElemType;
1)顺序存储结构
typedef struct{
ElemType *elem; //数据元素存储空间基址,0 号单元留空
int length; //表长
}SSTable;
2)二叉链表存储结构
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild; //左右孩子指针 }BiTNode,*BiTree;
3. 算法设计
1)顺序表的查找
void Creat_Seq(SSTable *ST,ElemType r[],int n){
int i;
(*ST).elem = (ElemType*)calloc(n+1,sizeof(ElemType)); //动态生成 n+1 个数据元素空间(0 号单元不用)
if(!(*ST).elem) exit(0);
for(i=1;i=n;i++)
(*ST).elem[i]=r[i-1]; //将数组 r 的值依次赋给 ST (*ST).length=n;
}
Status Destroy_Seq(SSTable ST){
free(ST.elem);
ST.elem = NULL;
ST.length = 0;
return OK;
}
int Search_Seq(SSTable ST,KeyType key){
int i;
ST.elem[0].key=key; //哨兵
for(i=ST.length;!(ST.elem[i].key==key);--i); //从后往前找
return i; //找不到时,i 为 0
}
void Traverse(SSTable ST,void(*Visit)(ElemType)){
ElemType *p;
int i;
p=++ST.elem; //p 指向第一个元素
for(i=1;i=ST.length;i++)
Visit(*p++);
}
2)有序表的查找
int Search_Bin(SSTable ST,KeyType key){
int low,high,mid;
= 1;high = ST.length; //置区间初值 while(low=high){
= (low + high)/2;
if(key==ST.elem[mid]) return mid; //找到待查元素 else if(keyST.elem[mid]) high = mid - 1;
/*继
原创力文档

文档评论(0)