数据结构 实验十一:(查找实验,设计性) 代码部分

本文是关于数据结构实验十一的查找实验,主要涉及C语言实现。实验中,作者遇到了索引查询操作未实现及无法更新输入表数据的问题。针对这些问题,提出了增加数据更新功能以提高程序可用性的解决方案,并提供了关键词查询的代码参考。
摘要由CSDN通过智能技术生成

数据结构

实验十一:(查找实验,设计性)

代码

关键词查询1.0

/*
	时间:2021/06/12
	作者:瑞雪流年
	功能:1、建立顺序查找表,并在此查找表上实现顺序查找操作; 
		  2、建立有序顺序查找表,并在此查找表上实现二分查找操作; 
		  3、建立索引查找表,并在此查找表上实现索引查找操作。 (未能实现,没有弄清楚原理)
*/


#include <stdio.h>
#include <malloc.h>
#define MAXSIZE 100    //顺序查找表的最大长度
#define OK 1;
#define OVERFLOW -1;
typedef int Status;  
typedef int KeyType;    //整型关键字类型
typedef int InfoType; 

typedef struct{
   
  KeyType key;       //关键字域
  InfoType  otherinfo;        // 其它数据项
}ElemType;         //记录类型

typedef struct{
   
  ElemType *elem; //记录存储空间基地址,构造表时按实际长度分配,0号单元留空
  int length;      //表长度
}SSTable;         //静态查找表类型

//构造一个容量为MAXSIZE的空顺序表 
Status Creat_SSTable(SSTable &ST)  
{
      ST.elem = (ElemType *)malloc(MAXSIZE*sizeof(ElemType));//有序表预分配空间的大小
    if (!ST.elem)        //如果空间分配失败
        return OVERFLOW;//返回值为OVERFLOW,即 -1 
    ST.length=0;
    return OK;	//否则返回 1 
}

//顺序查找函数 
int Search_Seq(SSTable ST, KeyType key)   	//若查找成功,则返回其下标位置;否则,返回0
{
    int i;
       ST.elem[0].key = key;    
       for(i=ST.length; ST.elem[i].key!= key; i--);   //从后往前进行查找
       return i;   //若找到,则返回下标位置;若没有找到,则返回0
}

//二分查找函数
int Search_Bin(SSTable ST, KeyType key)   //若查找成功,则返回其下标位置;否则,返回0
{
      int low=1;         //查找范围的下界
      int high=ST.length; //查找范围的上界
      while(low<=high)
      {
      int mid=(low+high)/2;//中间位置,当前比较的记录位置
          if(key==ST.elem[mid].key)
               return mid;      //查找成功,返回下标位置
          else if(key<ST.elem[mid].key)
               high=mid-1;   //查找范围缩小到前半段
          else
               low=mid+1;   //查找范围缩小到后半段
     }
    return 0;
 }
 
//排序函数 
void Sort_Select(SSTable &ST)
{
       for
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值