首页 > 其他分享 >15.3顺序查找及实战

15.3顺序查找及实战

时间:2023-04-10 20:24:05浏览次数:40  
标签:实战 TableLen 15.3 int ElemType elem ST 查找 key

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
typedef int ElemType;
typedef struct {
    ElemType *elem;  //整型指针,申请的堆空间的起始地址存入elem
    int TableLen;    //存储动态数组里边元素的个数
}SSTable;

void ST_Init(SSTable &ST,int len)
{
    //多申请一个位置,为了存哨兵,不使用哨兵也可以,为了和王道书一致
    ST.TableLen=len+1;
    ST.elem=(ElemType*) malloc(sizeof (ElemType)*ST.TableLen);
    int i;
    srand(time(NULL));   //随机生成
    for (i = 1; i < ST.TableLen; i++) {
        //因为第0个是哨兵,所以从1随机
        ST.elem[i]=rand()%100; //为了随机生成的书都在0到99之间
    }
}

//打印顺序表
void ST_print(SSTable ST)
{
    int i;
    for (int i = 1; i < ST.TableLen; i++)
    {
        printf("%3d",ST.elem[i]);
    }
    printf("\n");
}

int Search_seq(SSTable ST,ElemType key)
{
    ST.elem[0]=key;  //key存在0号位置,作为哨兵,有了这个在循环时,可以少写一个i>=0判断
    int i;
    for (i = ST.TableLen-1; ST.elem[i]!=key; i--);
    return i;
}
//顺序查找
int main() {
    SSTable ST;
    ST_Init(ST,10);
    ST_print(ST);      //打印顺序表中元素
    ElemType key;
    printf("please input search key:\n");
    scanf("%d",&key);
    int pos;
    pos = Search_seq(ST,key);
    if(pos)
    {
        printf("find key,pos=%d\n",pos);
    } else{
        printf("not find\n");
    }
    return 0;
}

 

标签:实战,TableLen,15.3,int,ElemType,elem,ST,查找,key
From: https://www.cnblogs.com/su-1007/p/17304160.html

相关文章

  • Java代理之jdk动态代理+应用场景实战
    本文将先介绍jdk动态代理的基本用法,并对其原理和注意事项予以说明。之后将以两个最常见的应用场景为例,进行代码实操。这两个应用场景分别是拦截器和声明性接口,它们在许多开发框架中广泛使用。比如在spring和mybatis中均使用了拦截器模式,在mybatis中还利用动态代理来实现声明性接口......
  • 用find_if查找vector内对象的成员
    用stl的find方法查找一个包含简单类型的vector中的元素是很简单的,例如vector<string>strVec;find(strVec.begin(),strVec.end(),”aa”);假如vector包含一个复合类型的对象呢比如classA{public:A(conststd::stringstr,intid){this->str=str;this->id=id;}private:......
  • Python3网络爬虫实战之爬虫框
    ScrapySplash的安装ScrapySplash是一个Scrapy中支持JavaScript渲染的工具,本节来介绍一下它的安装方式。ScrapySplash的安装分为两部分,一个是是Splash服务的安装,安装方式是通过Docker,安装之后会启动一个Splash服务,我们可以通过它的接口来实现JavaScript页面的加载。......
  • (之前的项目复习)我的Java项目实战--校园餐饮商户外卖系统02
    开发笔记二1.完善登录功能问题分析前面我们已经完成了后台系统的员工登录功能开发,但是还存在一个问题:用户如果不登录,直接访问系统首页面,照样可以正常访问。这种设计并不合理,我们希望看到的效果应该是,只有登录成功后才可以访问系统中的页面,如果没有登录则跳转到登录页面。那......
  • mysql - 在 MySQL 空间数据库中查找相交区域
    在MySQL数据库中,如何找到完全或部分落在距另一点一定距离内的圆形区域?有很多例子可以找到某个半径内的点,但没有找到与该半径相交的圆形区域。我有一份为某些区域(点和半径)提供服务的承包商列表。客户需要能够根据与他们的距离找到这些承包商。最佳答案我认为您正在寻找......
  • 5 分钟带你小程序入门 [实战总结分享]
    微信小程序常常用4种文件类型JS文件JS在小程序中用于编写页面逻辑和交互效果,可调用API接口完成数据请求和处理,也可以使用第三方库和框架。模块化编程:小程序中JS文件可以使用ES6的模块化语法,通过export和import来导出和导入模块。引用其他JS文件:小程序中的JS文件可以......
  • LeetCode习题——x 的平方根(二分查找)
    ###x的平方根力扣链接:[x的平方根](https://leetcode.cn/problems/sqrtx/)####题目>给你一个非负整数x,计算并返回x的算术平方根。>>由于返回类型是整数,结果只保留整数部分,小数部分将被舍去。>>注意:不允许使用任何内置指数函数和算符,例如pow(x,0.5)或者x*......
  • 二分查找
    #include<iostream>usingnamespacestd;intbinaryFind(int*arr,intlen,inttarget){intleft=0;intright=len;#不要用sizeof(arr)/sizeof(arr[0])求数组长度,这样相当于求一个指针所占字节数8/4=2,引入参数lenwhile(left<=right){......
  • [MAUI 项目实战] 手势控制音乐播放器(一): 概述与架构
    这是一篇系列博文。请关注我,学习更多.NETMAUI开发知识![MAUI项目实战]手势控制音乐播放器(一):概述与架构[MAUI项目实战]手势控制音乐播放器(二):手势交互[MAUI项目实战]手势控制音乐播放器(三):动画[MAUI项目实战]手势控制音乐播放器(四):圆形进度条在之前的博文中提到这个......
  • 14.6二叉树的层序遍历实战
    function.h////Createdby93757on2023/3/21.//#ifndefINC_1_TREE_FUNCTION_H#defineINC_1_TREE_FUNCTION_H#include<stdio.h>#include<stdlib.h>typedefcharBiElemType;typedefstructBiTNode{BiElemTypec;//c就是书籍上的datastru......