当前位置: 首页 > article >正文

在顺序结构和链式结构的线性表上实现顺序检索算法

线性表中各个结点的检索概率不等,可用于如下策略提高顺序检索的效率:若找到指定结点,则将该结点和其前驱结点(若存在)交换,使得经常被检索的结点尽量位于表的前端。试设计在顺序结构和链式结构的线性表上实现上述策略的顺序检索算法。

顺序表实现:

思想:查找指定结点,交换该结点与前驱

代码:

int SeqSrchArray(SSTable s,int key){
	int i=0;
	
	//找指定结点
	while(s.elem[i] !=key && i<s.length) i++;
	
	if(i<s.length && i>0){
		swap(s.elem[i-1],s,elem[i]);
		return i-1;//返回下标 
	} else{
		return -1;
	}
}

链表:

思想:查找指定结点,交换该结点与前驱

代码:


LinkNode * SeqSrchLink(LinkNode *head,int key){
	LinkNode *pre=head;//当前结点前驱
	LinkNode *p=head->next;//当前结点
	
	while(p!=NULL && p->data!=key) {//找指定结点和前驱 
		pre=p;
		p=p->next;
	}
	//找到了指定结点,且有前驱 
	if(p!=NULL && pre!=head){
		swap(pre->data,p->data);
		return pre;
	}else{
		return NULL;
	}
} 


http://www.kler.cn/a/350113.html

相关文章:

  • 图谱之前端关系应用
  • 观察者模式 - 观察者模式的应用场景
  • 计算机组成原理——数据表示(二)
  • tinykv Project2ab 实现思路
  • MyBatis 注解开发详解
  • 快速入门Flink
  • Ascend C算子编程和C++基础 Lesson3-4 性能优化
  • 流程图
  • Angular 实现 keep-alive (路由复用)
  • 鸿蒙应用,如何保存用户的 token
  • 【.net core使用minio大文件分片上传】.net core使用minio大文件分片上传以及断点续传、秒传思路
  • 构建可扩展的高校学科竞赛平台:SpringBoot案例分析
  • 2.2.ReactOS系统KSERVICE_TABLE_DESCRIPTOR结构体的声明
  • 基于Spring Boot REST API设计指南
  • 控制Stable Diffusion生成质量的多种方法
  • 水库大坝安全监测预警系统守护大坝安全卫士
  • 余 弦 曲 线
  • FineReport 动态列切换统计维度
  • 【大数据应用开发】2023年全国职业院校技能大赛赛题第10套
  • 【无标题】react组件封装
  • 图像按照X轴对称
  • FileLink内外网文件交换——致力企业高效安全文件共享
  • SpringFramework实战指南
  • libaom 源码分析:aomenc.c 文件
  • JAVA就业笔记6——第二阶段(3)
  • 不用搭建服务?MemFire Cloud让开发更简单