数据结构系列(对应swust oj题解)(持续更新中)
文章平均质量分 68
从学校的数据结构开始,写一个数据结构的a题系列。
青衿白首志
加油加油
展开
-
SWUST OJ#517 作业调度方案
其中前n行依次表示每个工件的每个工序所使用的机器号,第1个数为第1个工序的机器号,第2个数为第2个工序机器号,等等。例如,当n=3,m=2时,“1-1,1-2,2-1,3-1,3-2,2-2”就是一个给定的安排顺序,即先安排第1个工件的第1个工序,再安排第1个工件的第2个工序,然后再安排第2个工件的第1个工序,等等。根据上图且题目所给的顺序(1 1 2 3 3 2),即先安排第1个工件的第1个工序,再安排第1个工件的第2个工序,然后再安排第2个工件的第1个工序...因此,采用插空法,依次遍历每一道工序。原创 2022-12-28 23:28:55 · 583 阅读 · 2 评论 -
SWUST OJ#794 最近对问题
题目描述设p1=(x1, y1), p2=(x2, y2), …, pn=(xn, yn)是平面上n个点构成的集合S,设计算法找出集合S中距离最近的点对。输入多组测试数据,第一行为测试数据组数n(0原创 2022-09-14 13:22:53 · 2757 阅读 · 1 评论 -
SWUST OJ#99 欧几里得博弈
oj 题解原创 2022-09-13 20:30:34 · 888 阅读 · 4 评论 -
SWUST OJ#541 排列的字典序问题
题目描述n个元素{1,2,..., n }有n!个不同的排列。将这n!个排列按字典序排列,并编号为0,1,…,n!-1。每个排列的编号为其字典序值。例如,当n=3时,6 个不同排列的字典序值如下:任务:给定n 以及n 个元素{1,2,..., n }的一个排列,计算出这个排列的字典序值,以及按字典序排列的下一个排列。输入第1 行是元素个数n(n < 15)。接下来的1 行是n个元素{1,2,..., n }的一个排列。输出第一行是字典序值,第2行是按字典序排列的下一个排列。样例输入8。原创 2022-09-04 21:47:11 · 2623 阅读 · 3 评论 -
SWUST OJ#1068 图的按录入顺序深度优先搜索
题目题目描述图的深度优先搜索类似于树的先根遍历,即从某个结点开始,先访问该结点,然后深度访问该结点的第一棵子树,依次为第二顶子树。如此进行下去,直到所有的结点都访问为止。在该题中,假定所有的结点以“A”至“Z”中的若干字符表示,且要求结点的访问顺序根据录入的顺序进行访问。如果结点录入的顺序为HUEAK,从H开始进行深度优先搜索,则可能的搜索结果为:H->A->K->U>E.输入第一行为一个整数n,表示顶点的个数,第二行为n个大写字母构成的字符串,表示顶点,接下来原创 2022-05-18 21:16:55 · 572 阅读 · 0 评论 -
SWUST OJ#1069 图的按录入顺序广度优先搜索
题目题目描述图的广度优先搜索类似于树的按层次遍历,即从某个结点开始,先访问该结点,然后访问该结点的所有邻接点,再依次访问各邻接点的邻接点。如此进行下去,直到所有的结点都访问为止。在该题中,假定所有的结点以“A”--“Z”中的若干字符表示,且要求结点的访问顺序根据录入的顺序进行访问。如果结点录入的顺序为HUEAK,要求从H开始进行广度优先搜索,则可能的搜索结果为:H->E->A->U->K.输入第一行为一个整数n,表示顶点的个数,第二行为n个大写字母构成的字符串,原创 2022-05-18 05:34:48 · 498 阅读 · 0 评论 -
SWUST OJ#1014冒泡排序 #1016插入排序
目录思路#1014冒泡排序题目冒泡排序动图代码#1016插入排序题目插入排序动图代码思路这两类加上选择排序,即为3种最基础的排序方式。基本排序介绍#1014冒泡排序题目题目描述编程实现冒泡排序,按照非递减排序,测试数据为整数。输入第一行是待排序数据元素的个数;第二行是待排序的数据元素。输出第一行输出第一趟冒泡排序的结果。样例输入1050 36 41 19 23 4 20 18 12 22样例输出原创 2022-05-18 02:50:30 · 518 阅读 · 0 评论 -
SWUST OJ#1105 交换二叉树的孩结点
目录题目思路代码题目题目描述编程程序实现将二叉树中所有结点的左右孩子互换输入二叉树的先序序列(输入先序序列建立二叉树)。输出第一行为交换后的二叉树的中序序列第二行为交换后的二叉树的先序序列样例输入ABD###C###样例输出CABDACBD思路翻转二叉树可以先镜面先序遍历(根->右孩子->左孩子),并储存。然后再依次先序创建之前储存的镜面先序遍历。//创建翻转的二叉树char node[100.原创 2022-05-18 02:39:40 · 636 阅读 · 0 评论 -
SWUST OJ#1077 平衡二叉树的判定
目录题目思路代码题目题目描述编写程序判断给定的二叉树是否是平衡二叉树。输入二叉树的先序序列。输出如果是平衡二叉树,输出yes!,否者输出no!样例输入AB##C##样例输出yes!思路首先,需要了解什么是平衡二叉树平衡树(Balance Tree,BT) 指的是,任意节点的子树的高度差都小于等于1。常见的符合平衡树的有,B树(多路平衡搜索树)、AVL树(二叉平衡搜索树)等。通俗来说,平衡二叉树的高度差不能大于1原创 2022-05-18 02:33:58 · 1005 阅读 · 0 评论 -
SWUST OJ#1053 输出利用先序遍历创建的二叉树中的指定结点的度
目录题目思路代码题目题目描述利用先序递归遍历算法创建二叉树并输出该二叉树中指定结点的度。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符“#”时表示该结点不需要创建,否则创建该结点。最后再输出创建完成的二叉树中的指定结点的度。注意输入数据序列中的字符“#”和非“#”字符的序列及个数关系,这会最终决定创建的二叉树的形态。输入输入用例分2行输入,第一行接受键盘输入的由大写英文字符和“#”字符构成的一个字符串(用于创建对应的二叉树),第二行为指定的结点数据。输原创 2022-05-18 02:20:51 · 247 阅读 · 0 评论 -
SWUST OJ#1052 输出利用先序遍历创建的二叉树中的指定结点的双亲结点
目录题目思路代码题目题目描述利用先序递归遍历算法创建二叉树并输出该二叉树中指定结点的双亲结点。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符“#”时表示该结点不需要创建,否则创建该结点。最后再输出创建完成的二叉树中的指定结点的双亲结点。注意输入数据序列中的“#”字符和非“#”字符的序列及个数关系,这会最终决定创建的二叉树的形态。输入输入用例分2行输入,第一行接受键盘输入的由大写英文字符和“#”字符构成的一个字符串(用于创建对应的二叉树),第二行为指定的结点原创 2022-05-18 02:14:19 · 204 阅读 · 0 评论 -
SWUST OJ#1051 输出利用先序遍历创建的二叉树中的指定结点的孩结点
目录题目思路代码题目题目描述利用先序递归遍历算法创建二叉树并输出该二叉树中指定结点的儿子结点。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符"#"时表示该结点不需要创建,否则创建该结点。最后再输出创建完成的二叉树中的指定结点的儿子结点。注意输入数据序列中的"#"字符和非"#"字符的序列及个数关系,这会最终决定创建的二叉树的形态。输入输入用例分2行输入,第一行接受键盘输入的由大写英文字符和"#"字符构成的一个字符串(用于创建对应的二叉树),第二行为指定的结点原创 2022-05-18 02:05:31 · 186 阅读 · 0 评论 -
SWUST OJ#1011 二叉排序树的实现和查找
目录题目思路代码题目题目描述按照给定的关键字集合,建立二叉排序树。在建立的二叉排序树上查找指定的关键字,查找成功,输出找到该关键字比较的次数;查找不成功,输出-1.输入关键字个数n; 关键字集合; 要查找的关键字;输出查找成功输出比较的次数,否则输出-1。样例输入1225 18 46 2 53 39 32 4 74 67 60 1174样例输出4思路二叉排序树,本质上是二叉搜索树二叉查找树 (Binary Se原创 2022-05-18 01:57:25 · 1058 阅读 · 0 评论 -
SWUST OJ#1010 折半查找的实现
题目题目描述编写程序实现折半查找算法。输入第一行是查找表的长度n第二行是查找表中的数据元素 ;第三行是要查找的数据元素的关键字.输出查找成功返回位序,不成功返回-1 ,第二行为比较的次数。样例输入115 13 19 21 37 56 64 75 80 88 92100样例输出-14思路折半查找即二分查找,不过注意本题下标从0开始。二分算法介绍代码#include <iostream>#include原创 2022-05-18 01:37:53 · 459 阅读 · 0 评论 -
SWUST OJ#983 利用中序和后序遍历求先序遍历
题目思路首先先要把三种遍历弄明白前序遍历:★根->左孩子->右孩子中序遍历:左孩子->★根->右孩子后序遍历:左孩子->右孩子->★根关键突破点就是遍历时根节点的位置根据定义,后序遍历的最后一个节点即是根节点。找到根节点,再确定根节点在中序序列中的位置,就可以分出左右两棵子树。然后再在已知的左右子树中,故技重施,再次按照上述步骤,再次找到左右孩子的根节点,再确定左右孩子的根节点在中序序列中的位置,就可以再次分出左右两棵子树。下面原创 2022-05-11 22:13:16 · 370 阅读 · 0 评论 -
SWUST OJ# 利用中序和前序遍历求后序遍历
目录题目思路代码暴力建树递归深搜题目思路首先先要把三种遍历弄明白前序遍历:★根->左孩子->右孩子中序遍历:左孩子->★根->右孩子后序遍历:左孩子->右孩子->★根关键突破点就是遍历时根节点的位置根据定义,前序遍历的第一个节点即是根节点。找到根节点,再确定根节点在中序序列中的位置,就可以分出左右两棵子树。然后再在已知的左右子树中,故技重施,再次按照上述步骤,再次找到左右孩子的根节点,再确定左右孩子的根节原创 2022-05-11 22:15:32 · 415 阅读 · 0 评论 -
SWUST OJ#978 #979 #980 二叉树的遍历
深度优先遍历输出利用先序遍历创建的二叉树的前序遍历序列思路按照前序遍历定义:根->左子树->右子树,写出代码即可。代码//前序遍历void BTProOrder(BinaryTree* &root) { if(root==NULL) return; cout<<root->data<<" "; BTProOrder(root->left); BTProOrder(root->right);原创 2022-05-06 17:55:46 · 1878 阅读 · 1 评论 -
SWUST OJ#973 #975 #976 #977 统计二叉树节点个数
目录#975 统计利用先序遍历创建的二叉树的度为2的结点个数题目思路代码#976 统计利用先序遍历创建的二叉树的度为1的结点个数题目思路代码#973 统计利用先序遍历创建的二叉树叶结点(0度)的个数题目思路代码#977 统计利用先序遍历创建的二叉树中的空链域个数题目思路代码#975 统计利用先序遍历创建的二叉树的度为2的结点个数题目题目描述利用先序递归遍历算法创建二叉树并计算该二叉树度为2结点的个数。先序递归遍历建立二叉树原创 2022-04-25 12:53:15 · 1412 阅读 · 0 评论 -
SWUST OJ#963 小偷的背包
强烈安利这篇博客,朋友写的一篇题解。有代码以及超详细讲解,通俗且易懂。点击即可跳转代码如下#include <algorithm>#include <iostream>using namespace std;int wi[10005];int bag(int s, int n)//遍历所有组合{ if (s == 0) return 1; else if (s < 0 || n == 0) return 0; else if (bag(s转载 2022-04-25 11:00:05 · 134 阅读 · 0 评论 -
SWUST OJ#971 #972 返回二叉树宽度和深度
#971 统计利用先序遍历创建的二叉树的深度题目题目描述利用先序递归遍历算法创建二叉树并计算该二叉树的深度。先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建该二叉树的二叉链表存储结构。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符"#"时表示该结点不需要创建,否则创建该结点。最后再统计创建完成的二叉树的深度(使用二叉树的后序遍历算法)。需要注意输入数据序列中的"#"字符和非"#"字符的序列及个数关系,这原创 2022-04-25 11:22:27 · 800 阅读 · 0 评论 -
SWUST OJ#1039 单链表中信息的分类
目录题目思路代码数据结构STL题目题目描述已知L为设有头结点的单链表中第一个结点的指针,每个结点数据域存放一个字符,该字符可能是英文字母字符或数字字符或其他字符。编写程序构造三个以带头结点的单循环链表表示的线性表,使每个表中只含同一类字符,最后输出链表中的信息。输入链表中的数据元素;输出第一行为数字链表中的信息; 第二行为英文字母字符链表中的信息; 第三行为其它字符链表中的信息。样例输入abc123@$12样例输出12..原创 2022-04-12 17:19:12 · 172 阅读 · 0 评论 -
SWUST OJ#957 逆置单链表
目录题目思路代码数据结构头插法尾插逆置法STL题目题目描述建立长度为n的单链表,然后将其数据元素逆置,即第1个元素变为最后一个元素,第2个元素变为倒数第2个元素,以此类推,最后一个元素变为第1个元素。(处理的数据类型为字符型。必须使用链表完成。)输入第一行为链表长度n; 第二行为链表中的n个数据元素的值。输出逆置后的原始的值。样例输入10ABCDEFGHIJ样例输出J I H G F E D C B A..原创 2022-04-12 16:57:21 · 1452 阅读 · 0 评论 -
SWUST OJ#955 单链表上查找算法的实现
目录题目思路代码数据结构STL题目题目描述建立一个长度为n的带头结点的单链表,在该表中寻找第i个结点,若找到,则输出ok,否则输出error。处理数据类型为整型。输入第一行为链表的长度n; 第二行为链表中的数据元素; 第三行为要找的结点i。输出找到就输出ok,没找到就输出error。样例输入101 2 3 4 5 6 7 8 9 105样例输出ok思路从头遍历查找即可,没找到就输出error并退出程序,找到了原创 2022-04-12 16:28:49 · 183 阅读 · 0 评论 -
SWUST OJ#954 单链表的链接
题目题目描述建立长度为n的单链表A和长度为m的单链表B。编程实现将B表链接在A表的尾端,形成一个单链表A。数据类型指定为字符型。输入第一行为A表的长度n; 第二行为A表中的数据元素; 第三行为B表的长度m; 第四行为B表中的数据元素。输出输出为链接好后的A表中的所有数据元素。样例输入4A B C D61 2 3 4 5 6样例输出A B C D 1 2 3 4 5 6思路和之前的方法一样,先遍历让位置p 指向链表LA的最后一个节点.原创 2022-04-12 15:41:49 · 1745 阅读 · 0 评论 -
SWUST OJ#953 单链表的删除
题目题目描述建立长度为n的单链表,删除第i个结点之前的结点。输入第一行为自然数n,表示链式线性表的长度; 第二行为n个自然数表示链式线性表各元素值; 第三行为指定的删除参数i。输出指定删除位置合法时候,输出删除元素后的链式线性表的所有元素,元素之间用一个空格隔开。 输入不合法,输出"error!"。样例输入51 2 3 4 53样例输出1 3 4 5思路比较简单,从头遍历链表,找到输入位置之前的地址p,在找到输入位置之后的地址q,然后把原创 2022-04-12 15:11:48 · 431 阅读 · 0 评论 -
SWUST OJ#149 校门外的树~~离散化算法
目录题目思路常规暴力离散化代码题目思路常规暴力可以来一个模拟,根据总长度,设一个数轴,每一个点初始值为1代表有树for(int i=0;i<=L;i++) a[i]=1;/*L为马路(即数轴)总长 注:题目要求从0开始 */然后n次询问,每一次一个起点和终端,然后把这些范围内每个点,赋值为0,代表砍了树。for(int i=l;i<=r;i++) a[i]=0;//l代表起点,r代表终点最后统计值为1..原创 2022-04-04 21:27:41 · 251 阅读 · 2 评论 -
SWUST OJ#1045 集合的交运算
题目假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性表中的数据元素即为集合中的成员。编程实现集合A和集合B的交运算。输入第一行为集合A的数据元素个数n;第二行输入n个集合A的数据元素 ;第三行为集合B的数据元素的个数;第四行输入m个集合B的数据元素输出A和B的交集样例输入80 5 6 3 8 7 9 1071 3 4 7 8 9 5样例输出5 3 8 7 9思路和SWUST OJ#1037集合的并原创 2022-03-22 14:31:47 · 197 阅读 · 0 评论 -
SWUST OJ#1038 顺序表中重复元素的删除
题目将存储在顺序表中的长度为n的线性表中指定的数据全部删除。输入第一行为顺序表的长度n; 第二行为顺序表中的数据元素; 第三行为指定要删除的元素值。输出如果表不空,输出删除指定值后的线性表;如果删除后表空,则输出-1。样例输入811 22 33 44 44 55 44 6644样例输出11 22 33 55 66...原创 2022-03-22 13:51:04 · 202 阅读 · 0 评论 -
SWUST OJ#952 单链表插入
目录题目思路代码数据结构STL题目题目描述建立长度为n的单链表,在第i个结点之前插入数据元素data。输入第一行为自然数n,表示链式线性表的长度; 第二行为n个自然数表示链式线性表各元素值; 第三行为指定插入的位置i;第四行为待插入数据元素data。输出指定插入位置合法时候,输出插入元素后的链式线性表的所有元素,元素之间用一个空格隔开。输入不合法,输出"error!"。样例输入51 2 3 4 536样例输出1 2 6原创 2022-04-11 12:13:18 · 581 阅读 · 3 评论 -
SWUST OJ#1036 寻找整数序列的主元素
题目已知一个整数序列A=(a0,a1,…an),如果其中有一个元素的出现次数超过n/2,就称该元素为A的主元素,否则就称整数序列没有主元素。例如A=(0,5,5,3,5,7,5,5),则5为主元素。A=(0,5,5,3,5,1,5,7),则A中没有主元素。要求编写程序实现寻找给定整数序列的主元素,如果找到,则输出主元素。如果没有找到,则输出-1。输入第一行为整数序列的个数n第二行为一个整数序列。输出如果找到主元素,输出主元素的值,否则输出-1样例输入80 5 5原创 2022-03-22 12:37:43 · 192 阅读 · 0 评论 -
SWUST OJ#1037 集合的并运算
题目假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性表中的数据元素即为集合中的成员。编程实现集合A和集合B的并运算。输入第一行为集合A的数据元素个数n 第二行输入n个集合A的数据元素 第三行为集合B的数据元素的个数; 第四行输入m个集合B的数据元素。输出第一行为A和B的并集.样例输入80 5 6 3 8 7 9 1071 3 4 7 8 9 5样例输出0 5 6 3 8 7 9 10 1 4思路方法1(暴力出.原创 2022-03-22 10:37:38 · 275 阅读 · 0 评论 -
SWUST OJ#1035 定位顺序表最大最小值
题目建立长度为n的顺序表,在表中找出最大值和最小值元素所在的位输入第一行为顺序表的长度n;第二行为顺序表中的数据元素;输出第一行为最大值的位置;第二行为最小值的位置。本题输出格式:第一行输出需换行,第二行输出无需换行。样例输入71 2 3 4 5 6 7样例输出Lmax=6Lmin=0思路本题可以像普通数组那样,从头遍历,找到最大值最小值,并记录位置。代码数据结构#include <iostream>..原创 2022-03-13 14:08:43 · 1563 阅读 · 0 评论 -
SWUST OJ#943 顺序表插入
题目建立长度为n的顺序表,在指定的数据元素item之前插入数据元素data。如果指定的数据元素item不存在,则将data插入到顺序表的尾端。(数据类型为整型)输入第一行为顺序表的长度n; 第二行为顺序表中的数据元素; 第三行为指定的数据元素item; 第四行为要插入的数据元素data;输出输出结果为顺序表中的数据元素。样例输入1010 20 30 40 50 60 70 80 90 1005055样例输出10 20 30 40 55 50 60 7原创 2022-03-13 13:46:12 · 430 阅读 · 0 评论 -
SWUST OJ#942 逆置顺序表
目录题目思路代码数据结构STL仿STL题目建立长度为n的顺序表,然后将表中的数据元素逆置,即若表中原来的数据元素序列为(a0,a1,a2,…,an),则逆置后的数据元素序列为(an,an-1,an-2,…,a1,a0)。(数据类型为字符型)输入:第一行为顺序表的长度n;第二行为顺序表中的数据元素.输出:输出为逆置后的顺序表.样例输入:7ABCDEFG样例输出:G F E D C B A思路第一种是正常解法,也就是新.原创 2022-03-13 13:20:59 · 2283 阅读 · 0 评论 -
SWUST OJ#941 顺序表合并
目录题目思路代码数据结构STL仿STL题目已知两非递减的顺序线性表,要求合并成一个新的非递减顺序线性表。输入包含四行,第一行为自然数n,表示第一个非递减顺序线性表的长度; 第二行为n个自然数构成的非递减顺序线性表; 第三行为自然数m,表示第二个非递减顺序线性表的长度; 第四行为m个自然数构成的非递减顺序线性表。输出:用一行输出合并后的非递减顺序线性表,各数之间用一个空格隔开。样例输入: 样例输出:2 ...原创 2022-03-13 12:57:20 · 901 阅读 · 0 评论 -
数据结构笔记(8)图的深搜和广搜
目录图与树的转化深搜概念代码实现广搜概念代码实现图与树的转化在树的介绍中我们曾讲到,任何一个数据结构,我们都可以把它转化成类似树的形式。例如一维数组或者线性表链表,转化成树的形式,就叫做线段树或者叫树状数组(一种算法)那么图,也可以转化为类似树的形式。深搜概念深度优先搜索是一种在开发爬虫早期使用较多的方法。它的目的是要达到被搜索结构的叶结点(即那些不包含任何超链的HTML文件) 。在一个HTML文件中,当一个超链被选择后,被链接的HTML文件原创 2022-05-18 05:30:21 · 1236 阅读 · 0 评论 -
数据结构笔记(7)图的表示及储存方式
目录无向图表示方式邻接表邻接矩阵储存方式二维数组(即邻接矩阵)STL(推荐使用STL,主要是有计数功能)有向图表示方式邻接表邻接矩阵储存方式二维数组(即邻接矩阵)STL(推荐使用STL,主要是有计数功能)无向图表示方式邻接表邻接表即一行两个数u,v。无向图中表示顶点u和顶点v有一条边。若u=1,v=3。则表示顶点1,3之间有一条边。像这样,就是邻接表表示的无向图邻接矩阵邻接矩阵有着行和列之分,但是行和列.原创 2022-05-18 01:25:01 · 407 阅读 · 0 评论 -
数据结构笔记(6)二叉树的实现
树的介绍二叉树定义二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分。二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个节点。原创 2022-04-25 00:25:17 · 1968 阅读 · 1 评论 -
数据结构笔记(5)树的基础介绍
前言接下来就是数据结构的第二大板块:树之前的第一板块:线性表中的顺序表和链表已经更完。但由于队列和栈是特殊的线性表,既然特殊,实际上就普通的顺序表和链表也能实现,加上队列和栈可直接STL实现。故由此,先暂时跳过队列和栈的实现(实际上队列和栈的实现也是仿STL的)笔记(1)为顺序表仿STL的实现,笔记(2)为链表的实现,笔记(3)为队列的仿STL实现,笔记(4)为栈的仿STL实现,而本篇笔记(5)则介绍树形结构树的定义树是一种数据结构,它是由n(n≥0)个有限节点组成一个具有层次关系原创 2022-04-20 16:39:08 · 1844 阅读 · 0 评论 -
数据结构笔记(2)线性表之链表介绍
链表定义链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(log原创 2022-03-26 02:25:52 · 929 阅读 · 0 评论