几乎所有已开发的程序或软件系统都使用数据结构。此外,数据结构属于计算机科学和软件工程的基础。因此,如果你需要用到编程技能,就应该对数据结构有充分的了解。今天我们为大家详细介绍你应该了解的常见数据结构和常见术语中英语对照。
数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
数据结构往往同高效的检索算法和索引技术有关。数据结构可以分为逻辑结构和存储结构,有四类基本逻辑结构:集合、线性结构、树形结构、图状结构。这几类结构有以下几个特点:
集合结构:除了同属于一种类型外,别无其它关系。
线性结构:元素之间存在一对一关系。常见类型有: 数组,链表,队列,栈。它们之间在操作上有所区别。例如:链表可在任意位置插入或删除元素,而队列在队尾插入元素,队头删除元素,栈只能在栈顶进行插入,删除操作。
树形结构:元素之间存在一对多关系。常见类型有:树(有许多特例:二叉树、平衡二叉树、查找树等)
图形结构:元素之间存在多对多关系,图形结构中每个结点的前驱结点数和后续结点多个数可以任意。
那么有哪些常见的数据结构呢?他们又有哪些特征呢?今天SimpleTense就来总结一下,希望对大家有所帮助。
常见数据结构
数组(Array)
数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。数组可以说是最基本的数据结构,在各种编程语言中都有对应。一个数组可以分解为多个数组元素,按照数据元素的类型,数组可以分为整型数组、字符型数组、浮点型数组、指针数组和结构数组等。数组还可以有一维、二维以及多维等表现形式。
栈(Stack)
栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作。栈按照后进先出的原则来存储数据,也就是说,先插入的数据将被压入栈底,最后插入的数据在栈顶,读出数据时,从栈顶开始逐个读出。栈在汇编语言程序中,经常用于重要数据的现场保护。栈中没有数据时,称为空栈。
队列(Queue)
队列和栈类似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。一般来说,进行插入操作的一端称为队尾,进行删除操作的一端称为队头。队列中没有元素时,称为空队列。
链表(Linked List)
链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构具有在物理上存在非连续的特点。链表由一系列数据结点构成,每个数据结点包括数据域和指针域两部分。其中,指针域保存了数据结构中下一个元素存放的地址。链表结构中数据元素的逻辑顺序是通过链表中的指针链接次序来实现的。
树(Tree)
树是典型的非线性结构,它是包括,2个结点的有穷集合K。在树结构中,有且仅有一个根结点,该结点没有前驱结点。在树结构中的其他结点都有且仅有一个前驱结点,而且可以有两个后继结点,m≥0。
1)二叉树
2)遍历二叉树:
前序(先中间,再左边,后右边)
中序(先左边,再中间,后右边)
后序(先左边,再右边,后中间)
3)线索二叉树:用二插链表实现的二叉树,将那些没有使用的左右指针指向前驱和后继(前驱和后继就是遍历后(例如用中序遍历)的数据序列某一个数据的前面和后面的数据),形成的二叉树为线索二叉树。一般用在经常遍历和利用前驱和后继查找结构的情况。
4)赫夫曼树:用于压缩
5)二叉排序树:根节点的左子树若不为空,则左子树所有节点都小于根节点。根节点的右子树若不为空,则右子树所有节点都大于根结点。根节点的左右子树不为空,则其都是二叉平衡树。
6)平衡二叉树:一颗左右子树高度差至多等于1的二叉排序树。
添加节点的时候,根据不平衡子树左旋右,保证最后的树是平衡的。
优点:查找,插入,删除时间复杂度都是:O(logn)
7)多路查找树:结点的孩子不止为两个,结点存的值补位一个。如2-3树,2-3-4树,B树,B+树
8)红黑树:也是二叉排序树。利用一个结点的属性表明这个结点是红是黑。查找等同于二叉排序树。插入和删除利用这个颜色属性来保证操作之后树还是平衡的。所以查找,插入和删除的时间复杂度都是:O(logn)。统计性能比平衡二叉树好
9)堆:二叉树,分为大顶堆,小顶堆。大顶堆的要求是每个节点的值都不大于其父节点的值,小顶堆放过来。
图(Graph)
图是另一种非线性数据结构。在图结构中,数据结点一般称为顶点,而边是顶点的有序偶对。如果两个顶点之间存在一条边,那么就表示这两个顶点具有相邻关系。
五种构造图的方式
1)遍历:
深度优先:一个劲的朝一个方向使劲,当重复了就返回
广度优先:先从一个顶点触发,拿到这个顶点,再把与这个顶点相关的顶点放入队列,再从队列取数据,再把与这个新取的顶点相关的顶点(非重复过的顶点)放入队列,依次同理操作
2)最小生成树:
普里姆(Prim)算法:O(n2)
克鲁斯卡尔(Kruskal)算法:O(e*loge)
3)最短路径:
迪杰斯特拉(Dijkstra)算法O(n3)
弗洛伊德(Floyd)算法O(n3)
4)拓扑排序:AOV网:用顶点表示活动,用弧表示优先关系的有向图
拓扑排序算法:O(n+e) n个顶点e条边
5)关键路径:AOE网:用顶点表示时间,用有向边表示活动,用边的权值表示持续的时间的有向图
关键算法路径:O(n+e)
堆(Heap)
堆是一种特殊的树形数据结构,一般讨论的堆都是二叉堆。堆的特点是根结点的值是所有结点中最小的或者最大的,并且根结点的两个子树也是一个堆结构。
散列表(Hash)
散列表源自于散列函数(Hash function),其思想是如果在结构中存在关键字和T相等的记录,那么必定在F(T)的存储位置可以找到该记录,这样就可以不用进行比较操作而直接取得所查记录。
常见数据结构术语中英对照表
数据 Data
数据元素 Data element
数据项 Data item
数据结构 Data structure
逻辑结构 Logical structure
数据类型 Data type
指针 Pointer
顺序存储结构 Sequential storage structure
链状存储结构 Linked storage structure
稠密索引 Dense index
稀疏索引 Sparse index
抽象数据类型 Abstract DataType
算法 Algorithm
正确性 Correctness
可读性 Readability
健壮性 Robustness
频度 Frequency count
时间复杂度 Time complexity
空间复杂度 Space complexity
直接前驱 Immediate predecessor
线性表 Linear list
顺序表 Sequenatial list
单链表 Singly linked list
循环链表 Circylar linked lists
双向链表 Double linked lists
双向循环链表 Double circular linked list
栈 Stack
栈顶 Top
栈底 Botton
后进先出 Last In First Out
上溢 Overflow
下溢 Underflow
共享 Shared
队列 Queue
队尾 Rear
队头 Front
先进后出 First In Last Out
串 String
子串 Substring
模式匹配 Pattern matching
数组 Arrays
行为主序 Row major order
列为主序 Column major order
稀疏矩阵 Sparse matrices
特殊矩阵 Special matrices
三元组表 List of 3_tuples
十字链表 Orthogonal list
广义表 Generalized lists
树 Tree
二叉树 Binary tree
满二叉树 Full binary tree
完全二叉树 Complete binary tree
二叉排序树 Binary sort tree
二叉搜索树 Binary search tree
前序遍历 Preorder traversal
中序遍历 Inorder traversal
后序遍历 Postorder traversal
哈夫曼树 Huffman tree
回溯 Backtrackins
图 Graph
有向图 Directed graph (digraph)
无向图 Undirected graph (undigraph)
有向完全图 Undirected Complete Graph
无向完全图 directed complete graph
稀疏图 Sparse graph
稠密图 Dense graph
网点 Network
邻结点 Adjacent
度 Degree
出度 Outdegree
入度 Indegree
连通图 Connected graph
连通分支 Connected component
强连通图 Strong graph
生成树 Spanning tree
邻接矩阵 Adjacency lists
邻接表 Adjacency lists
邻接多重表 Adjacency multilists
深度优先索引 Depth-First Search
广度优先索引 Breath-First Search
最小生成树 Minimum spanning tree
最短路径 Shortest path
有向无环图 Directed acycline graph
拓扑排序 Topological sort
检索 Searching
关键字 Key
主关键字 Primary key
顺序检索 Sequential search
折半检索 Binary search
分块检索 Blocking search
平衡二叉树 Best wishes alanced binary tree
平衡因子 Balanced factor
直接定址 Immediately allocate
除留余数法 Division method
数字分析法 Digit analysis method
折叠法 Folding method
线性探查 Linear probing
平方取中法 Mid-square method
开放定址法 Open addressing
链地址法 Chaining
排序 Sorting
直接插入排序 Straight insertion sort
希尔排序 Shells method
缩小增量排序 Diminishing increment sort
折半插入排序 Binary insertion sort
二路插入排序 2_way insertion sort
共享插入排序 Shared insertion sort
冒泡排序 Bubble sort
快速排序 Quick sort
选择排序 Selection sort
直接选择排序 Straight selection sort
树形选择排序 Tree selection sort
锦标赛排序 Tournament sort
堆排序 Heap sort
归并排序 Merging sort
二路归并 2_way merge
多路归并 Multi_way merge
基数排序 Radix sorting
最低位优先 (LSD) Least Significant Digit First
最高位优先 (MSD) Most Significant Digit First
文件 Files
顺序文件 Sequential file
索引文件 Indexed file
索引顺序存取方法 Indexed Sequential Access Method
虚拟存储存取方法 Virtual Storage Access Method
散列文件 Hashed file
多关键字文件 With more than one key
多重表文件 Multilist file
倒排文件 Inverted file
数据抽象 data abstraction
数据元素 data element
数据对象 data object
数据项 data item
数据类型 data type
抽象数据类型 abstract data type
基本数据类型 atomic data type
固定聚合数据类型 fixed-aggregate data type
可变聚合数据类型 variable-aggregate data type
线性表 linear list
栈 stack
队列 queue
串 string
数组 array
树 tree
图 grabh
前趋 predecessor
后继 successor
直接前趋 immediate predecessor
直接后继 immediate successor
双端列表 deque(double-ended queue)
循环队列 cirular queue
指针 pointer
先进先出表(队列) first-in first-out list
后进先出表(队列) last-in first-out list
栈底 bottom
栈顶 top
压入 push
弹出 pop
队头 front
队尾 rear
上溢 overflow
下溢 underflow
数组 array
矩阵 matrix
多维数组 multi-dimentional array
以行为主的顺序分配 row major order
以列为主的顺序分配 column major order
三角矩阵 truangular matrix
对称矩阵 symmetric matrix
稀疏矩阵 sparse matrix
转置矩阵 transposed matrix
链表 linked list
线性链表 linear linked list
单链表 single linked list
多重链表 multilinked list
循环链表 circular linked list
双向链表 doubly linked list
十字链表 orthogonal list
广义表 generalized list
链 link
指针域 pointer field
链域 link field
头结点 head node
头指针 head pointer
尾指针 tail pointer
串 string
空白(空格)串 blank string
空串(零串) null string
子串 substring
树 tree
子树 subtree
森林 forest
根 root
叶子 leaf
结点 node
深度 depth
层次 level
二叉树 binary tree
平衡二叉树 banlanced binary tree
满二叉树 full binary tree
完全二叉树 complete binary tree
遍历二叉树 traversing binary tree
二叉排序树 binary sort tree
二叉查找树 binary search tree
线索二叉树 threaded binary tree
哈夫曼树 Huffman tree
有序数 ordered tree
无序数 unordered tree
判定树 decision tree
双链树 doubly linked tree
数字查找树 digital search tree
树的遍历 traversal of tree
先序遍历 preorder traversal
中序遍历 inorder traversal
后序遍历 postorder traversal
总的来说,数据结构作为算法的知识系统之一,学习起来难度较大,也让很多同学非常头痛。不过不用担心,StudyGate汇集全网大神,全天候帮助你提高数据结构的学习成绩!保原创,保成绩!几个步骤,完成大神集结!
Step 1:提交作业要求
三分钟即可完成下单,下单时可以选择作业需要的时间和具体要求。
Step 2:选择专业导师
作业提交成功之后,导师审核要求,确认之后会联系报价,可自由选择专业学科相关导师,并且确认作业最终价格。
Step 3:完成订单, 准时交付
导师开始处理订单。在此期间有任何问题,都可以登录账号和导师随时沟通。作业完成后,系统自动发送至你的邮箱,所有信息安全保密。你也可以登录账号直接下载。
Step 4:收到答案14天之内确认,100%满意保证
收到作业之后14天之内,如果对作业有任何问题,都可以联系导师进行修改。100%满意保证,只有你选择满意答案之后,我们才会扣款,安全有保障。
Step 5:对导师提出评价
我们拥有严格的导师考核评价机制,服务好不好,全由你说了算!你的认同是我们前进的动力。
我们的服务范围包括但不限于:
C,C#,C++
Computer Science
Data structure/Machine Learning
Dreamweaver
HTML 代写
Java/JavaScript/JQuery
Linux/Windows/Mac socket Algorithm
Macintosh
Mathematica (programming)
R语言
Networking (computer)
Oracle
Pascal/Perl/PHP/Python
Revit/Rust/Ruby
SAS/Sketchup/Solidworks/SQL/STATA/Swift/SPSS
UNIX
Visual Basic
Web Design/Operating System
StudyGate专业理工科作业辅导,最靠谱的Data Structure 作业辅导!
有任何问题,欢迎随时咨询网页客服!