精华内容
下载资源
问答
  • 数据结构顺序查找代码
    千次阅读
    2021-11-20 19:49:26

           顺序查找:从表的一端开始,依次将记录在表中的关键字与给定值进行比较,若某个记录的关键字和给定值相同,则查找成功;反之查找失败。

        顺序查找既适用于顺序表,又适用于线性表,首先先介绍顺序表中的顺序查找

    数据结构类型定义如下:

    typedef struct
    {
        KeyType key;         //关键字域
        InfoType otherinfo;  //其他域
    }ElemType;

     定义单个结点后,再定义顺序表

    typedef struct
    {
        ElemType *R;  //(ElemType a[100])存储空间基地址
        int length;   //顺序表长度
    }List;

      接下来就是顺序查找的算法描述

    bool Search(List B,KeyType key)
    {//再顺序表中查找关键字与key相等的元素,若找到要输出该元素所包含的所有信息并返回正确
          找不到则返回错误
        for(int i=B.length;i>=1;i--)
        {//从后往前进行比较查找,因为0的位置没有值,所以比较到1就停止
             if(B.a[i]==key)
             {
                printf(该元素的所有信息);
                return Ture;
                break;
             }
            if(i==0)retur False;
        }
    }

    源代码如下

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define MAXSIZE 100
    //创建单个结点 
    typedef struct
    {
    	char name[6];
    	int price;
    }book;
    //创建顺序表结构体 
    typedef struct
    {
    	book elem[MAXSIZE];
    	int length;//顺序表的长度 
    }books;
    //初始化顺序表
    void Init(books B)
    {
    	B.length=0;
     } 
     bool CreatList(books &B,int n)
    {
    	if(n<0||n>MAXSIZE) return false;//当n数量不对时返回错误 
    //从1开始赋值顺序表 ,让零闲置 
    	for(int i=1;i<=n;i++)
    	{
    		scanf("%s %d",&B.elem[i].name,&B.elem[i].price);
    		B.length++;
    	}
    	return true;
    }
     //向顺序表中输入元素
     void PutIn(books &B)
     {
     	int n;
     	bool flag;//创建布尔类型变量 
     	printf("输入数量\n");
     	scanf("%d",&n);
     	printf("输入数据\n");
    	flag=CreatList(B, n);
    	 if(flag) printf("创建成功\n");
    	 else printf("输入长度非法\n"); 
      } 
    //顺序查找 
    void Search_Seq(books B)
    {
    	char b[6];
    	printf("输入查询书籍\n");
    	scanf("%s",b);
    //从后往前查找 
    	for(int i=B.length;i>=1;i--){
    	  if(strcmp(B.elem[i].name,b)==0){
    	  	printf("查询成功\n");
    	  	printf("%s %d",B.elem[i].name,B.elem[i].price);
    	  	break;
    	  }
    	  if(i==0) printf("所查书籍不在系统中\n");
    	}
    }
    //主函数 
    int main()
    {
    	books B;
    	Init(B);
    	PutIn(B);
    	Search_Seq(B);
    	return 0;	
    }

    在以上代码的顺序查找中,每步都要进行i>=1的比较,所用时间较长,改进这个程序将空闲的0的位置赋值关键字key,可以使程序运行时间减少很多,这时将a[0]称为监视哨

    函数

    bool Search(List B,ElemType key)
    {
         B.a[0].key=key;
         for(int i=B.length;B.a[i].key!=key;i--)
         return i;
    }
    

    具体使用方法将不再展示,与上一个方法大致相同

    更多相关内容
  • 顺序查找代码 #include #include typedef struct{ char *elem; int length; }SSTable; char key;
  • 数据结构顺序查找

    2012-10-25 15:48:42
    编程实现有n个元素的有序顺序表上的二分查找算法。查找若成功,输出其位置,还需输出查找次数;若失败,输出提示信息,还需输出比较次数。
  • 顺序查找 //顺序查找 #include<stdio.h> #define MAXSIZE 30 typedef struct { int key;//int为关键字key的数据类型 char data;//其他数据,可有可无 } SeqList;//顺序表元素类型 int SeqSearch(SeqList R...

    顺序查找

    //顺序查找
    #include<stdio.h>
    #define MAXSIZE 30
    typedef struct
    {
    	int key;//int为关键字key的数据类型
    	char data;//其他数据,可有可无 
     } SeqList;//顺序表元素类型
    
    int SeqSearch(SeqList R[],int n,int k)
    {
    	int i=n;
    	R[0].key=k;//R[0].key 为查找不成功的监视哨
    	while(R[i].key !=k)//由表尾向表头方向查找 
    	   i--;
    	return i;//查找成功返回找到的位置值,否者返回0 
     }
    int main()
    {
    	int i=0,j,x;
    	SeqList R[MAXSIZE];//建立存放顺序表的元素
    	//生成顺序表中的数据(-1结束)
    	scanf("%d",&x);
    	while(x!=-1)
    	{
    		R[i].key=x;
    		scanf("%d",&x);
    		i++;
    	 }
    	//输出顺序表中的数据
    	for(j=0;j<i;j++)
    	    printf("%2d",R[j].key);
    	//输入查找的数据(-1)结束
    	scanf("%d",&x);
    	i=SeqSearch(R,i,x);
    	if(i>0)
    		printf("Position of %d in SeqList is %d\n",x,i+1);//找到输出顺序表中的位置
    	else
    		printf("No Fund %d in SeqList!\n",x);//输出未找到的信息
     }
    /*测试数据:
    1
    2 3 4 5 6 -1
    2
    
    1
    2 3 4 5 6 -1
    8
    
    */ 
    
    展开全文
  • 顺序查找的实现 顺序查找的一般过程为:从表的一段开始,依次将记录的关键字和给定的值进行比较,若某个记录的关键字和给定值相等,则查找成功;反之,若扫描整个表后,仍未找到关键字和给定值相等的记录,则查找...

    顺序查找的实现

    顺序查找的一般过程为:从表的一段开始,依次将记录的关键字和给定的值进行比较,若某个记录的关键字和给定值相等,则查找成功;反之,若扫描整个表后,仍未找到关键字和给定值相等的记录,则查找失败。

    数据元素类型定义如下:

    typedef struct{
        keytype key;//关键字域
        InfoType otherinfo;//其他域
    }ElemType;

    顺序表的定义如下: 

    typedef struct{
        ElemType *R;//存储空间基地址
        int length;//当前长度
    }SSTable;

     R可以理解成一个数组,用来存放数据的元素。开始时,元素从R[1]开始顺序向后存放,R[0]暂时闲置不用,之后设置监视哨,将它放置到R[0]。查找时从表的最后依次与监视哨开始比较(顺序表的一端添加用户用于搜索的关键字,称作“监视哨)放置好监视哨之后,顺序表遍历从没有监视哨的一端依次进行,如果查找表中有用户需要的数据,则程序输出该位置;反之,程序会运行至监视哨,此时匹配成功,程序停止运行,但是结果是查找失败.

     顺序查找的具体实现代码为:

    #include <stdio.h>
    #include <stdlib.h>
    #define keyType int
    typedef struct {
        keyType key;//查找表中每个数据元素的值
        //如果需要,还可以添加其他属性
    }ElemType;
    typedef struct{
        ElemType *elem;//存放查找表中数据元素的数组
        int length;//记录查找表中数据的总数量
    }SSTable;
    //创建查找表
    void Create(SSTable **st,int length){
        (*st)=(SSTable*)malloc(sizeof(SSTable));
        (*st)->length=length;
        (*st)->elem =(ElemType*)malloc((length+1)*sizeof(ElemType));
        printf("输入表中的数据元素:\n");
        //根据查找表中数据元素的总长度,在存储时,从数组下标为 1 的空间开始存储数据
        for (int i=1; i<=length; i++) {
            scanf("%d",&((*st)->elem[i].key));
        }
    }
    //查找表查找的功能函数,其中key为关键字
    int Search_seq(SSTable *st,keyType key){
        st->elem[0].key=key;//将关键字作为一个数据元素存放到查找表的第一个位置,起监视哨的作用
        int i=st->length;
        //从查找表的最后一个数据元素依次遍历,一直遍历到数组下标为0
        while (st->elem[i].key!=key) {
            i--;
        }
        //如果 i=0,说明查找失败;反之,返回的是含有关键字key的数据元素在查找表中的位置
        return i;
    }
    int main() {
        SSTable *st;
        Create(&st, 6);
        getchar();
        printf("请输入查找数据的关键字:\n");
        int key;
        scanf("%d",&key);
        int location=Search_seq(st, key);
        if (location==0) {
            printf("查找失败");
        }else{
            printf("数据在查找表中的位置为:%d",location);
        }
        return 0;
    }

    代码中设置了一个固定长度为6的顺序表,运行结果为:

     顺序查找的优缺点:优点:算法简单,对表结构无任何要求,既适用于顺序结构,也适用于链式结构,无论记录是否按关键字有序均可应用。缺点:平均查找长度较大,查找效率低,所以当n很大时,不宜用顺序查找。

    展开全文
  • 这是讲解代码中函数关系的Keynote 为了大家方便,已转换为ppt 博客地址blog.csdn.net/u012350104
  • 算法思想:在表的一端设置一个称为“监视哨”的附加单元,存放要查找元素的关键字,从表的另一端开始查找,如果在“监视哨”找到要查找元素的关键字,返回失败信息,否则,返回相应下标。

    Ⅰ )算法思想:

          在表的一端设置一个称为“监视哨”的附加单元,存放要查找元素的关键字,从表的另一端开始查找,如果在“监视哨”找到要查找元素的关键字,返回失败信息,否则,返回相应下标。

    Ⅱ)性能分析:

          假设列表长度为n,那么查找到第i 个元素时,需要进行n-i+1次比较。

          ASL =  1/n∑(n-i+1) = (n+1)/2

    Ⅲ)源代码:

    #include<stdio.h>
    #define MaxSize 20                  //线性表长度
    typedef struct
    {
        int key;
    }RecordType;
     
    typedef struct
    {
        int length;
        RecordType r[MaxSize + 1];       
    }RecordList;
     
    int SeqSearch(RecordList l, int key)
    {
        int i;
        l.r[0].key = key;                    //将要查找的值赋给监视哨
        i = l.length;
        while (l.r[i].key != key)              
        {
            i--;
        }
        return i;                             //当l.r[i].key == key时返回下标
    }
     
    int main()
    {
        RecordList L = { 6, 0, 12, 15, 20, 25, 45, 50 };
     
        printf("%d\n", SeqSearch(L, 20));            //输出元素20所在的下标
     
        return 0;
    }

    展开全文
  • 实验六 查找 //顺序查找和二分查找 #include "stdio.h" #include "stdlib.h" #define N 20 typedef struct { int Key; }ElemType; typedef struct SSTable { ElemType *elem; int length; }SSTable; int Search_Seq...
  • 实验题目包括1.实现并运行顺序查找。2.实现并运行二分查找。3.根据输入的数字,构造一棵二叉判定树。
  • 本文实例为大家分享了C语言实现顺序表的顺序查找和折半查找的具体代码,供大家参考,具体内容如下 顺序查找: #include using namespace std; int SeqSearch(int r[],int n,int k) { r[0]=k;//下标0用作哨兵存放...
  • 顺序表的创建、查找、插入、删除等一些基本操作,使用c++编写的简单例子,适用于初学者,通过学习实例,能更好的掌握顺序
  • 1.顺序查找 2.折半查找 3.分块查找 4.王道课后题
  • 数据结构实验报告 实验第四章 实验: 简单查找算法 一需求和规格说明 查找算法这里主要使用了顺序查找折半查找二叉排序树查找和哈希表查找四种方法由于自己能力有限本想实现其他算法但没有实现其中顺序查找相对比较...
  • 顺序查找:也称为线性查找,是最基本的查找技术。查找过程是:从表中第一个(或最后一个)记录开始,逐个进行记录的关键字和给定值进行比较,若某个记录的关键字和给定值相等,则查找成功;如果直到最后一个(或第一...
  • 这是数据结构和算法设计课程设计一个选题。实践了顺序表的基本操作的封装,及实践中的调用。特别的对顺序表上的插入和删除操作做出详细的介绍。课设采用静态存储,按值查找。希望能够对其他同学有所帮助
  • 数据结构29:顺序查找算法及分析

    千次阅读 2020-09-21 20:15:50
    三、顺序查找:无序表查找代码 一、顺序查找Sequential Search 如果数据项保存在如列表这样的集合中,我们会称这些数据项具有线性或者顺序关系。 在python list中,这些数据项的存储位置称为下标,这些下标都是...
  • 数据结构基础入门】顺序表的概念、结构和接口实现
  • 数据结构线性表的顺序表示,有插入结点,删除结点,计算节点个数等功能,可选择功能执行。
  • 计算机软件技术基础中的数据结构,包括,顺序表,链表,栈,对列,二叉树,排序,查找等思想的c语言实现。文档的内容则是对于各个程序内部算法结构的刻画以及数据输入要求。
  • 数据结构-顺序表基本操作的实现(含全部代码

    万次阅读 多人点赞 2018-09-13 22:14:57
    今天起开始编写数据结构中的各种数据结构及其算法的实现。 主要依据严蔚敏版数据结构教材以及王道数据结构考研辅导书。 今天是线性表中的顺序表的实现,主要实现函数如下,读者有需要可以评论,我可以适当加几个。...
  • 按值查找顺序表。请在程序中建立一个含有10个元素,分别是1,2,3,4,5,6,7,8,9,10的顺序表。然后等候用户输入要查找的元素值,如顺序表中有该元素,则输出该元素位序,否则输出查找失败。 【输入】要查找的元素值 ...
  • 顺序表的查找C语言数据结构

    千次阅读 2022-02-13 22:36:37
    顺序表中查找元素 大致代码片有注释,若还有疑问,可进行评论 #include<stdio.h> #include<stdlib.h> #define Maxsize 10 //定义一个顺序表结构体 typedef struct{ int *elem; //顺序表的基址 ...
  • 用数组实现数据结构顺序表的几种功能。包括插入,判断顺序表是否为空,遍历顺序表,获取指定位置元素,查找元素,获取元素的前驱、后继,删除、清空、销毁顺序表。
  • #include using namespace std; #define True 11 #define False 0 #define Ok 111 #define Error -111 #define List_Init_Size 10 #define ListIncrement 10 typedef int Status;... //元素类型
  • 数据结构---折半查找算法代码

    千次阅读 2021-10-20 21:07:28
    1.折半查找又称二分查找,它仅适用于有序的顺序表(注:折半查找不适合链表,因为顺序表拥有随机访问的特性,而链表没有)。 1.折半查找可以采用非递归算法,也可以采用递归算法。下面就用代码分别实现两种算法: //...
  • 数据结构基础代码,内含树,图基本操作,链表,堆栈基本操作
  • 数据结构与算法-顺序查找

    千次阅读 2018-12-24 14:56:49
    概要查找概论顺序查找基本概念java代码实现时间复杂度分析 查找概论 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;只要你打开电脑,就会涉及...
  • 以下代码为使用C++完成顺序表的静态实现 后面会尝试顺序表的动态实现 #include<iostream> using namespace std; #define maxSize 10 struct sqlList { int data[maxSize]; //静态的“数组”存放数据 int...
  • 常用的接口函数3.realloc()函数使用细节4.assert( )函数二、代码实现1.SepList.h(1)引用函数库(2)定义动态顺序表(3)接口函数声明2.SepList.c(1)引用头文件(2)初始顺序表(3)检测顺序表容量是否足够(4...
  • 三、顺序查找 Search1函数(没有设置哨兵,需要比较两次) 四、顺序查找(设置哨兵,不用再比较是否会越界,只用比较一次)Search2函数 五、折半查找(非递归)Search3函数 六、折半查找(递归)Search4函数 七、显示...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 308,657
精华内容 123,462
热门标签
关键字:

数据结构顺序查找代码

数据结构 订阅