查找操作实验报告

  • 实验要求:
  1. 用C完成算法设计和程序设计并上机调试通过;
  2. 建立顺序表(11,15,22,25,33,44,55,66,77,88);
  3. 输出顺序表;
  4. 写出顺序查找关键字55的过程的算法,并输出所在的位置。
    5)用折半查找关键字66的过程的算法,并输出所在的位置。
    6)用折半查找关键字52的过程的算法。
  • 实验目的:
    1)掌握各种查找方法,并能在解决实际问题时灵活应用。
    2)通过实验进一步掌握散列查找时解决冲突的方法及特点。
    代码:
#include<stdio.h>
#include<malloc.h>

#define MaxSize 30
typedef int ElemType;

typedef struct
{
	ElemType  data[MaxSize];
	int length;
}SqList;

void CreateList(SqList * &L,ElemType a[],int n)//建立顺序表
{
	int i=0;
	L=(SqList *)malloc(sizeof(SqList));
	while(i<n)
	{
		L->data[i]=a[i]; 
		i++; 
	}
	L->length=n; 
}

void DispList(SqList *L)//输出顺序表
{
	for(int i=0;i<L->length;i++)
	    printf("%d ",L->data[i]);
	printf("\n");
}

int LocateElem(SqList *L,ElemType e)//顺序查找
{
	int i=0;
	while(i<L->length&&L->data[i]!=e)
	    i++;
	if(i>=L->length)
	    return 0;
	else 
	    return i+1;       
}

int BinSearch(SqList *L,int n,ElemType e)//折半查找
{
	int low=0,high=n-1,mid;
	while(low<=high)
	{
		mid=(low+high)/2;
		if(e==L->data[mid])
		   return mid+1; 
		if(e<L->data[mid])
			high=mid-1;
		else 
			low=mid+1;
	}
	return 0;
}


int main()
{
	SqList *L;
	ElemType b[10]={11,15,22,25,33,44,55,66,77,88};
	printf("建立顺序表(11,15,22,25,33,44,55,66,77,88)\n");
	CreateList(L,b,10);
	printf("输出顺序表:");
	DispList(L);
	printf("如果查询的数据在表中可以找到返回位置信息, 否则没有找到返回 0\n");
	printf("输出元素55的位置(顺序查找):%d\n",LocateElem(L,55));
	printf("输出元素66的位置(折半查找):%d\n",BinSearch(L,10,66));
	printf("输出元素52的位置(折半查找): %d\n",BinSearch(L,10,52));
 }

运行结果:
数据结构实验报告 查找操作
此实验报告分别采用顺序查找和折半查找两种方法。折半查找使用的前提是有序和顺序存储。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
定义B-树存储结构(要求m3;为方便操作,结点中增加双亲结点指针域,最底层的Fail结点用NULL指针表示并且所有结点均存储于内存)。定义B-树插入关键字函数、删除关键字函数、查找关键字函数以及按层次遍历输出B-树所有结点的函数。主函数定义菜单(1.插入关键字 2.删除关键字 3. 查找关键字 4.层次遍历输出B-树所有结点 5.结束程序)。 1. 插入关键字功能的输入为一个关键字,输出为新插入关键字所在结点的信息。 要求结点信息输出格式如下所示: (R102, n, K1, K2, …, Kn) R102表示结点位置,R表示根结点指针;第一个数字1表示根结点的A[1]指针,第二个数字0表求R->A[1]所指结点的A[0]指针,第三个数字2表示R->A[1]->A[0]所指结点的A[2]指针,即该结点指针为: R->A[1]->A[0]->A[2](该结点在第4层上)。n为该结点的关键字数目,K1, K2, …, Kn为该结点中n个非递减有序的关键字。 2. 删除关键字功能的输入为一个关键字,输出为删除成功与失败的信息。 3. 查找关键字功能的输入为一个关键字,输出为查找成功与失败的信息,查找成功时,应输出关键字所在结点信息(结点信息输出方法同1.)。 4. 按层次遍历输出B-树所有结点功能的输入为一个字符文件名,输出为该字符文件,字符文件中,一个结点的信息输出一行(结点信息输出方法同1.),结点输出次序为按层次号由小到大并且同层结点从左向右。
实验名称:Java数组操作 实验目的:掌握Java数组的基本操作,包括数组的定义、初始化、遍历、排序和查找等。 实验环境:Java语言编译器 实验内容: 1. 数组的定义和初始化 Java数组是一种特殊的对象,它可以存储同一类型的多个元素。数组的定义需要指定数组类型和数组的大小,例如int[] arr = new int[10];表示定义了一个包含10个整数的数组。数组还可以使用数组字面量进行初始化,例如int[] arr = {1, 2, 3};表示定义了一个包含三个整数的数组,并将它们初始化为1、2和3。 2. 数组的遍历 数组可以使用for循环进行遍历,例如: ``` for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } ``` 其中arr.length表示数组的大小,arr[i]表示数组中第i个元素。 3. 数组的排序 Java提供了Arrays类来对数组进行排序,例如Arrays.sort(arr)可以将数组arr按升序排序。也可以使用自定义的排序算法对数组进行排序,例如冒泡排序、快速排序等。 4. 数组的查找 Java提供了Arrays类来对数组进行查找,例如Arrays.binarySearch(arr, key)可以在数组arr中查找关键字key,并返回它的索引。如果数组中不存在关键字key,则返回负数。 实验步骤: 1. 定义一个包含10个整数的数组,并使用数组字面量进行初始化。 2. 输出数组中的所有元素。 3. 将数组按升序排序,并输出排序后的结果。 4. 在数组中查找元素5,并输出它的索引。 实验结果: ``` int[] arr = {5, 2, 3, 7, 1, 9, 4, 6, 8, 0}; // 输出数组中的所有元素 for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); // 将数组按升序排序 Arrays.sort(arr); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); // 在数组中查找元素5 int index = Arrays.binarySearch(arr, 5); System.out.println("Index of 5: " + index); ``` 输出结果为: ``` 5 2 3 7 1 9 4 6 8 0 0 1 2 3 4 5 6 7 8 9 Index of 5: 5 ``` 实验结论: 本实验通过对Java数组的操作,掌握了数组的定义、初始化、遍历、排序和查找基本操作。在实际编程中,需要根据具体的需求选择合适的数据结构来存储和处理数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OLoyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值