`
xlaohe1
  • 浏览: 128751 次
  • 性别: Icon_minigender_1
  • 来自: 来处
社区版块
存档分类
最新评论

C语言的线性搜索

阅读更多

#include <stdio.h>
#include <string.h>
//#define PF printf
int main() {
    int intcmp(void *ip1, void * ip2);
    void * lsearch(void *key, void *base, int n, int elemSize, int(* cmpfun)(void *, void *));
    int arr[] = {4, 6, 2, 3, 11, 22, 15};
    int n = sizeof(arr) / sizeof(int);
    int key = 11;
    int *found = lsearch(&key, &arr, n, sizeof(int), intcmp);
    printf("found=%p (%d)", found, *(int *) found);
    return 0;
}
int intcmp(void *ip1, void * ip2) {
    int *p1 = ip1, *p2 = ip2;
    return *p1 - *p2;
}
void * lsearch(void *key, void *base, int n, int elemSize, int(* cmpfun)(void *, void *)) {
    int i;
    for(i = 0; i < n; i ++) {
        void *elemArr = (char *)base + i * elemSize;
        if(cmpfun(key, elemArr) == 0)
            return elemArr;
    }

    return NULL;
}

分享到:
评论

相关推荐

    非线性规划中单纯形法求极值的C语言实现

    ### 非线性规划中单纯形法求极值的C语言实现 #### 概述 在非线性规划领域,解决多变量函数极值问题是一项常见任务。特别是在实际生产和生活中,这类问题尤为突出,例如寻找多变量函数的极小值、最大化生产效益等。...

    C语言链表实现学生信息管理

    - **查询学生信息**:`search()`函数根据用户提供的学号搜索链表中的学生信息。如果找到了匹配项,则会显示该学生的详细信息。 - **修改学生信息**:`modify()`函数允许用户修改链表中某个学生的姓名。用户需要提供...

    pta题库答案c语言之线性结构3ReversingLinkedList.zip

    在本压缩包“pta题库答案c语言之线性结构3ReversingLinkedList.zip”中,我们可以看到聚焦于C语言编程以及线性数据结构——链表的解答。这个题库可能包含了若干个与逆向链表操作相关的题目,旨在帮助学习者深入理解...

    C语言编写二进制数搜索程序

    它与线性搜索不同,线性搜索会从头到尾逐个检查元素,而二进制搜索通过不断将数组或列表分割为两半来缩小搜索范围。以下是如何执行二进制搜索的步骤: 1. **初始化**:首先,确定数组的中间元素。这可以通过计算...

    C语言编程宝典 c语言学习宝典

    在C语言中,可以编写各种类型的函数,如排序算法(如冒泡排序、快速排序)、搜索算法(如线性搜索、二分搜索)、数据结构操作(如链表、树的创建和遍历)等。通过实际编写和调试这些函数,学习者可以加深对C语言的...

    C语言实现简易文本编译器.doc

    2. **查找功能**:在文本中搜索特定字符串,展示其出现的行数、列数和总次数。 3. **替换功能**:支持等长和不等长的文本替换。 4. **插入功能**:允许在指定行号和列号处插入一行或文本。 5. **块移动功能**:行块...

    C语言 二分搜索源代码及界面演示

    这比线性搜索的O(n)快得多,特别是在处理大数据集时。 在数值算法中,二分搜索不仅可以用于查找特定元素,还可以用于寻找两个函数的交点。例如,假设我们有两个函数f(x)和g(x),我们想知道它们在哪个点相交。可以先...

    music_c语言music算法_C语言_musicdoac++_MUSIC算法_C语言DOA算法

    总之,MUSIC算法在C语言中的实现涉及了信号处理、线性代数和数值优化等多个领域的知识,对程序员的数学基础和编程能力都有较高要求。通过理解和掌握这个过程,不仅可以加深对MUSIC算法的理解,也能提高C语言编程的...

    c语言编程-公交系统

    - 查询算法:对于线路查询,可能使用线性搜索;对于复杂的换乘查询,可能需要更复杂的算法,如Dijkstra算法或A*搜索算法。 - 错误处理:程序应包含适当的错误处理机制,如处理无效的线路编号或不存在的站点。 4. ...

    PSO算法求解非线性方程组.zip_C语言_PSO_dev pso_粒子群_非线性方程组

    《使用C语言实现PSO粒子群算法解决非线性方程组》 粒子群优化(Particle Swarm Optimization,PSO)是一种模拟自然界中鸟群或鱼群群体行为的优化算法,常用于解决复杂的全局优化问题,如函数优化、工程设计、机器...

    200个C语言小游戏源代码

    14. 排序与搜索算法:一些游戏可能需要排序玩家分数或搜索特定元素,这就需要用到排序算法(如冒泡排序、快速排序)和搜索算法(如线性搜索、二分搜索)。 15. 并发与多线程:在多核处理器系统上,使用`pthread`库...

    BFGS_C语言BFGS_

    通过阅读和理解代码,我们可以学习到如何在实际编程中应用BFGS算法,包括如何处理目标函数和梯度的计算、如何进行线性搜索以及如何存储和更新Hessian的近似值。这个实现对于理解和优化其他科学计算或机器学习问题的...

    RS编解码的C语言实现

    解码过程则涉及到Chien搜索和Forney算法,用于找到错误位置并计算错误值。在C语言中,解码同样需要处理GF(2^m)的运算,并对编码序列进行一系列计算来恢复原始信息。 RS编解码的C语言实现不仅需要理解RS编码的数学...

    基于c语言编写的线性结构表.zip

    6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有...

    数据结构C语言版第一章课件严蔚敏_数据结构C语言_

    数据结构是计算机科学中的核心课程,它探讨了如何在计算机中高效地组织和管理数据,以便进行各种操作,如搜索、排序、插入和删除。在本主题中,我们将聚焦于严蔚敏教授的数据结构C语言版第一章课件,主要涵盖数据...

    C语言的五子棋程序

    这通常需要遍历棋盘并进行多次线性搜索,同时可能利用缓存优化以减少重复计算。 3. **保存游戏**:保存游戏功能允许用户中断游戏并稍后继续。在C语言中,这通常通过文件流操作实现,如`fopen`、`fwrite`和`fclose`...

    数据结构C语言 模拟器

    C语言是一种强大的系统编程语言,它提供了底层控制,非常适合实现数据结构的算法。这个“数据结构C语言模拟器”很可能是为了帮助学习者通过实际操作来理解各种数据结构的工作原理。 1. **数组**:数组是最基本的...

    算法:C语言实现第1-4部分基础知识、数据结构、排序及搜索

    线性搜索是最基础的方法,逐个检查元素直到找到目标。二分搜索适用于有序数组,效率显著高于线性搜索。此外,哈希表提供了一种快速查找的方法,通过映射键到特定位置来存储和检索数据,其查找时间通常为常数级别。 ...

    C语言解各种数学问题

    无论是线性代数中的矩阵运算,还是微积分中的数值解法,甚至是函数的插值与查找,都能在C语言的环境中得到精确且高效的实现。通过对这些知识点的理解和实践,开发者可以更好地利用C语言来解决实际的数学问题。

Global site tag (gtag.js) - Google Analytics