您现在的位置是:首页» windows系统» 数据结构链表考题,链表实现的数据结构有哪些

数据结构链表考题,链表实现的数据结构有哪些

2024-07-13 13:21:01
本内容由系统网小编为大家分享,Windows系统安装教程、办公系统、软件怎么使用、软件使用教程、办公软件攻略等信息。目录1简要介绍 Hashe表序列表的简单介绍3 链表的节点结构面试链表问题的解决方法5确定链表是否是一个反馈结构按指定值将单

本内容由系统网小编为大家分享,Windows系统安装教程、办公系统、软件怎么使用、软件使用教程、办公软件攻略等信息。

目录

1简要介绍 Hashe表

序列表的简单介绍

3 链表的节点结构

面试链表问题的解决方法

5确定链表是否是一个反馈结构

按指定值将单向链表分成左边的小、中间和大形式

7包含随机指针节点的链表复制

一系列关于两个单一链表的交叉问题

1简要介绍 Hashe表

1. Hash表在使用水平上可以理解为结构的集合

2.如果只有一个密钥和没有关联的数据值,您可以使用HashSet结构(在C++中称为UnOrderedSet)。

3. 如果 有 键 和 没有 相关 数据 值, 可以 使用 HashMap 结构 ( 在 C++ 中 称为 UnOrderedMap ) 。

4.没有伴随的数据,这是哈希地图和哈希集的唯一区别,而底部的实际结构是一样的

5.时间复杂性可以被认为是O(1),但常数时间较大

6.如果你把某个东西放在哈希表上,如果它是一个基本类型,那么它将通过内部值传递,而内存的使用是该东西的大小

7. 如果 Hash 表 中 放置 的 东西 不是 基本 类型, 则 通过 参考 传递 到 内部, 而 存储器 则 由 该 东西 的 存储地址 的 大小 占用

Hash表中的所有操作都处于O(1)级别

序列表的简单介绍

1. 按 顺序 编列 的 表 可以 在 使用 的 水平 上 理解 为 一 个 集合 结构

2. 如果 只有 一 个 键 和 没有 关联 的 数据 值, 您可以 使用 TreeSet 结构 ( 在 C++ 中 称为 OrderedSet )

3. 如果 有 键 和 相关 数据 值, 可以 使用 TreeMap 结构 ( C++ 中 称为 OrderedMap ) 。

4.TreeMap和TreeSet之间唯一的区别是没有相应的数据,底部的实际结构是相同的

5.红色和黑色的树木、AVL树木、大小平衡树木和跳板都属于订购的表格结构,但根本的实现不同

6.如果你把某个东西放在哈希表上,如果它是一个基本类型,那么它将通过内部值传递,而内存的使用是该东西的大小

7. 如果 Hash 表 中 放置 的 东西 不是 基本 类型, 则 通过 参考 传递 到 内部, 而 存储器 则 由 该 东西 的 存储地址 的 大小 占用

不管实施的具体内容是什么,只要是一个有序的表,它具有下列固定的基本功能和固定的时间复杂性

排序表中的所有操作都处于O(logN)级别

3 链表的节点结构

单链表的节点结构

Class Node<V>{

V value;

Node next;

}

通过连续连接上述结构的节点组成的单链表结构

双链表的节点结构

Class Node<V>{

V value;

Node next;

Node last;

}

通过连续连接上述结构的节点形成的链被称为双链表结构。

单链表和双链表结构只需要指定头节点的头节点才能找到所有剩余的节点。

面试链表问题的解决方法

1.对于笔试,你不必太担心空间的复杂性,也不必太担心时间的复杂性

2.在面试中,时间的复杂性仍然是首要的,但你必须找到最节省空间的方法

重要技巧:

1.附加数据结构记录( Hash 表 等 )

2. 快慢指针

5确定链表是否是一个反馈结构

标题:确定单一链表的节点头。请决定链表是否是一个反馈结构

例子:1->2->1, 返回 true;1->2->2->1, 返回 true;15->6->15, 返回 true;1->2->3, 返回 false;

例如:如果链表的长度为N,时间复杂度为O(N),余空间复杂度为O(1)

解决思路:

方法①

将所有数据放在堆栈中, 然后逐渐进行比较.

时间复杂度为(N)

方法②

将数据的一半放在堆栈中,然后逐渐进行比较(困难:如何知道你把数据的一半放在单一的链表中需要快速和慢点针,即快速点针需要两个步骤,慢点针需要一个步骤)

按指定值将单向链表分成左边的小、中间和大形式

主题:将单个链表头分配到节点上,节点的值类型是整数,给另一个整数 pivot.实现函数来调整链表,为了调整左边的链接表,有小于旋转的节点,中间部分是旋转的节点,右边是比旋转大的一个节点

进度:根据原问题函数的实现,添加了下列要求

要求:调整后所有节点小于旋转的相对顺序与调整前相同

要求:所有与调整后旋转相同的节点,与调整前相同相对顺序

要求:调整后所有节点比旋转大的相对序列与调整前相同

要求: 时间复杂度请达到O(N), 额外空间复杂度请达到O(1)

解决方法:定义六个新的指针,每个指针都有一个较小的尾巴,相当于部件的尾巴和比部件的尾巴大

注:如果没有少于、等于或大于部分,空点标将指向现有点标,并会报告错误,需要讨论使用清楚的结果。

7包含随机指针节点的链表复制

主题:一种特殊的单链表节点类描述如下

class Node{

int value;

Node next;

Node rand;

Node(int val){

value = val;

}

}

rand指针是单链表节点结构中的一个额外的指针。兰德可以指到链表中的任何节点,它也可以指零。给出由节点类型组成的循环单链表的头节点头,请执行函数完成此链接表的复制,并返回新的复制链表的头节点.

要求:时间复杂度O(N),额外空间复杂度O(1)

解决方法:

1你可以使用哈希表的地图

2 克隆每个邻近的节点后面的一个新节点,然后做一对,以提取rand指针的任务。 因为每个节点被克隆到后面,1'rand点到3,1'next点到3'。

一系列关于两个单一链表的交叉问题

主题:给出了两个单链表,头节点头1和头2,带有或没有环。 如果两个表交叉,请执行返回链接的第一个节点的函数。 如果不匹配,返回零

要求:如果两个链的长度是N,时间复杂度是O(N),余空间复杂度是O(1)

解题思路:

分步骤解题:

8.1首先解决如何在单一链表中找到一个带有环的点。如果有,返回第一个节点。

方法①

使用 Hash 表 Set (现在 Set 搜索,查看数据是否在每次将数据置入 Set 之前已经存在)

②快慢指针

首先,快速和缓慢的针在开始时保持相同的位置

2.用快速指针做两步,用慢指针做一步

3.如果有一个环,两个针就会在环上相撞

4.会议结束后,快速指针回到开始,成为一个步骤,慢点针停在地面,继续一个步骤

5.我们再次相遇的时刻必须在环中的第一个节点

8.调用上述功能,开始讨论情况

两个链表分别叫8。 函数是1中是否有环

出现以下情况:

1. loop1 == null , loop2 == null

两个链表不交叉或存在部分重叠

如何判断是否有交点

首先把头1 、 末端1 和长度镜头1 放在链表中.

接着取链表2中的head2,end2以及长度len2(假设len1>len2 or 谁长谁变为head1)

确定end1内存地址是否等于end2

如果等于,那么头1行走(len1-len2)+1步,头2行走步,那么两个链表交叉

一个是等于零的,另一个是等于零的。

那么两个链表不能交错

3. loop1, loop2不等于零

它们有环,但它们不相交

有一个环,一个普通环,环中的点是一样的

有一个环,一个共同的环,环中的点不是一样的

情况2:考虑环的结点,然后考虑两个非环表的交界问题

如何决定是否是条件1或条件3,让循环1继续,如果它等于循环2,则条件3,如果不是,则条件1

情况1:两个链表之间没有交叉点

情况3:两个链表的第一个交界可以是循环1或循环2

XTw.com.Cn系统网专业应用软件下载教程,免费windows10系统,win11,办公软件,OA办公系统,OA软件,办公自动化软件,开源系统,移动办公软件等信息,解决一体化的办公方案。

免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!

联系邮箱:773537036@qq.com