自调整表简介:自调整表的插入在前端进行。相比普通的栈和链表,自调整表有一个特殊的功能:find操作,即当一个元素被find方法访问时,它就会被移到自调整表的最前端位置,而不改变其余元素的相对位置。

细读要求,这实际上相当于一个正常的栈,多了一个方法,而这个新方法的功能相当于删除后再入栈。对于链表实现也是如此,find方法相当于记住需要删除的结点,之后把该结点利用头插法加到本list的头部。

以下分别是利用栈和链表来实现自调整表的代码。

typedef struct
{int Data[MaxSize];int top;
}selflistQUE;
class test006
{
public:void initi(selflistQUE& SE){SE.top = -1;}bool pushSE(selflistQUE& SE, int x){if (SE.top == MaxSize - 1){cout << "栈已满" << endl;return false;}SE.Data[++SE.top] = x;return true;}bool popSE(selflistQUE& SE,int&x){if (SE.top == -1){cout << "栈为空" << endl;return false;}x = SE.Data[SE.top--];return true;}bool emptySE(selflistQUE SE){if (SE.top == -1){return true;}return false;}void findSE(selflistQUE& SE, int x){int i = SE.top;for (;i > 0;i--){if (SE.Data[i] == x){break;}}int temp = SE.Data[i];while (i < SE.top){SE.Data[i] = SE.Data[i + 1];i += 1;}SE.Data[SE.top] = temp;}
};
//selflistLIST
class Node
{
public:int value;Node* next;Node(int x) :value(x),next(nullptr) {};
};
class test007
{
public:int size;Node* head;test007(){this->size = 0;}void insertLIST(int val){Node* s = new Node(val);if (!head){head = s;}else{Node* temp = head;head = s;s->next = temp;}this->size += 1;}void deleteLIST(int val){Node* s = head;Node* temp = s;while (s->value!=val){temp = s;s = s->next;}temp->next = s->next;this->size -= 1;}void findLIST(int val){Node* s = head;Node* temp = s;while (s->value != val){temp = s;s = s->next;}temp->next = s->next;s->next = head;head = s;}void travelLIST(){Node* temp = head;for(int i=0;i<this->size;i++){cout << temp->value;Node*s = temp->next;temp = s;}}
};

数组和链表实现自调整表(self-adjusting list)相关推荐

  1. 保存数组_面试官:讲一讲你对据结构——数组、链表、栈、队列的理解

    一.解释定义 1. 数据结构: 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.再简单描述一下:数据结构就是描述对象间逻辑关系的学科. 如果还是不太清楚下面会举例说明的. 2. 数据存储结 ...

  2. c语言实现线性结构(数组与链表)

    由于这两天看了数据结构,所以又把大学所学的c语言和指针"挂"起来了. 本人菜鸟一枚请多多指教.下面是我这两天学习的成果(数组和链表的实现,用的是c语言哦!哈哈). (一)数组的实现 ...

  3. C++用数组和链表分别实现Queue

    C++用数组和链表分别实现Queue 昨天写了<C++用数组和链表分别实现Stack>,今天就是<C++用数组和链表分别实现Queue>, 队列就是先来的先被处理掉,后来的就等 ...

  4. 链表 + 数组模拟链表

    链表的指针实现 1.指针 #include<iostream> using namespace std; int main(){int a = 5;int *p; // int 型的指针d ...

  5. C++用数组和链表分别实现Stack

    C++用数组和链表分别实现Stack C++学习有段时间了,感觉还是有很多不足啊,今天自己用数组和链表分别实现Stack,当然STL中的Stack肯定不是这么简单,你不妨看一下,说不定有收获呢,若发现 ...

  6. 数组、链表、Hash(转)

    在程序中,存放指定的数据最常用的数据结构有两种:数组和链表. 数组和链表的区别: 1.数组是将元素在内存中连续存放. 链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起. 2.数组 ...

  7. c#数据结构之集合的实现(数组及链表两种实现)

    集合的概念 集合是由一些确定的.彼此不同的成员或者元素构成的一个整体.如果将紧密相关的数据组合到一个集合中,则能够更有效地处理这些紧密相关的数据.代替编写不同的代码来处理每一单独的对象,您可以使用相同 ...

  8. [编程技巧] 巧用CPU缓存优化代码:数组 vs. 链表

    一个常见的编程问题: 遍历同样大小的数组和链表, 哪个比较快? 如果按照大学教科书上的算法分析方法,你会得出结论,这2者一样快, 因为时间复杂度都是 O(n). 但是在实践中, 这2者却有极大的差异. ...

  9. 算法与数据结构--数组和链表的区别

    最近由于在找工作,经历了一些校招面试后,感觉在数据结构和操作系统上面,还有很多的欠缺.所以今天要学习一下数据结构.还是从面试的那到题开始. 数组和链表的区别? C和C++语言中用数组处理一组数据类型相 ...

  10. 数据结构之数组、链表、栈和队列

    1.数组 1.1:概念 数组是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据.这里我们要抽取出三个跟数组相关的关键词:线性表,连续内存空间,相同数据类型:数组具有连续的内存空 ...

最新文章

  1. python代码编辑器排行榜-4款好用的Python编辑器,你用过几个?
  2. Python pip安装命令
  3. 树莓4派开机动画_树莓派4+无屏幕安装系统+ssh远程+远程桌面
  4. linux下scp命令详解
  5. mysql多源复制相同数据库名称_mysql数据库多源复制方案
  6. L2-2 口罩发放 (25 分)
  7. 【正点原子探索者STM32F407开发板例程连载+教学】第30章 SPI通信实验
  8. ET框架-03 ET框架-Demo工程的编译与运行
  9. Online Convex Making Gradient Descent Optimal for Strongly Convex Stochastic Optimization
  10. 微信分享之分享图片/分享图标不能显示
  11. PL330 DMAC笔记(3) - 外设请求接口,事件和中断,Abort
  12. Moment.js 文档
  13. C++寻找数组最大值和最小值
  14. 解读Gartner2013应用交付市场魔力象限
  15. 【CODEVS】2833 奇怪的梦境
  16. 河北工业大学数据挖掘实验一 数据预处理
  17. 超模脸、网红脸、萌娃脸...换头像不重样?我开源了5款人脸生成器
  18. 《可可西里》:一只被人类轮奸的藏羚羊
  19. 牛客网50道选择题(1)
  20. 微信小程序把玩(十四)button组件

热门文章

  1. get,post请求实例
  2. 多级返回,困扰了我一天的大bug(针对app端)uniapp
  3. 思杰:计算以人为本 发布入云四步路线图
  4. Android 仿京东头部滚动头像动态变化
  5. CQ-NOIP round5 游记
  6. 使用Itext将Html转换为Pdf,使用iText将HTML转换为PDF
  7. MathType 6.9中的字距该怎样进行调
  8. Android手机反编译方法
  9. 【数据分享】1999—2021年地级市学校数、教师数和学生数(Shp/Excel格式)
  10. springboot整合消息索引