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

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

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

顺序表实现:

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

代码:

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.mrgr.cn/news/49393.html

相关文章:

  • Ubuntu20.04同时安装ROS1和ROS2,如何选择ROS1 or ROS2
  • CVESearch部署、使用与原理分析
  • 使用mnist数据集和LeakyReLU高级激活函数训练神经网络示例代码
  • Springboot 使用【过滤器】实现在请求到达 Controller 之前修改请求体参数和在结果返回之前修改响应体
  • 25.1 降低采集资源消耗的收益和无用监控指标的判定依据
  • 7-2 试试多线程
  • 探索C#编程基础:从输入验证到杨辉三角的生成
  • Java——数组的定义与使用
  • AndroidLogger 使用问题
  • 大厂面试真题-AQS中节点的入队时机有哪些
  • React入门 9:React Router
  • 【汇编语言】寄存器(CPU工作原理)(七)—— 查看CPU和内存,用机器指令和汇编指令编程
  • 多语言网站的设计的探索——安企CMS多语言功能的实现记录
  • Python字符串格式
  • 鸿蒙开发 三十七 ArkTs类 class
  • HAL库常用的函数:
  • oracle存储过程
  • 位定时结构
  • 面试真题 | 百度C++研发工程师面经
  • 动态规划最大子段和讲解和【题解】——最大子段和