#数据结构_1

简介: #数据结构_1

11.数据结构


a.“线性”数据结构:元素之间存在1对1的线性关系,施加于对象上的增删改查,类似结构比如学生管理系统;


b.“树”数据结构:元素之间存在1对多的层次关系,计算机与人对弈:


c.“图”数据结构:最短路径问题,网络工程图、网络通信图;


2.基本概念


a.数据(Data):客观事物的符号表示;


b.数据元素(Data Element):数据的基本单位;


c.数据项(Data Object):组成数据元素的最小单位;


d.数据对象(Data Object):性质相同的数据元素集合;


e.数据结构(Data Structure):数据元素之间存在特定关系的集合,包括逻辑结构和存储结构;


1.逻辑结构:从具体问题抽象出来的数学模型,数据元素之间的关系,线性结构包括线性表、栈和队列、字符串、广义表,非线性结构包括树、二叉树、有向图、无向图;


a.集合结构(非线性结构)


b.线性结构


c.树结构(非线性结构)


d.图结构/网状结构(非线性结构)


2.存储结构/物理结构


a.顺序存储结构:连续地址存放


b.链式存储结构:指针类型、结点地址


f.数据类型(Data Type):除了C语言提供的整形、实型、字符型等,允许用户自定义例如数组、结构体、指针等;


g.抽象数据类型(Abstract Data Type,ADT):利用数据类型进一步构造出线性表、栈、队列、树、图等复杂的抽象数据类型,包括三部分:数据对象、数据对象关系的集合、数据对象的基本操作集合;


ADT 抽象数据类别名{


数据对象:(数据对象的定义〉


数据关系:(数据关系的定义〉


基本操作:(基本操作的定义〉


}ADT 抽象数据类型名


3.算法(Algorithm):解决某类问题而规定的有限长的操作序列


a.算法特性


i.有穷性:在有穷时间内执行有穷步后结束;


ii.确定性:应对每种情况,不会产生二义性;


iii.可行性:所有操作可以通过已经实现的运算执行;


iv.输入:有0个或多个输入;


v.输出:至少有1个输出,无输出的算法没有意义;


b.优劣基本


i.正确性


ii.可读性


iii.健壮性:对于非法输入能适当的处理;


iv高效性


1.时间高效:设计合理,效率高,可用时间复杂度衡量;


2.空间高效:存储容量合理,可用空间复杂度衡量;


c.复杂度:问题规模是算法求解问题输入量的多少,一般用整数n表示,在排序运算中n为参加排序的记录数,在矩阵运算中n为矩阵的阶数,在多项式运算中n为多项式的项数,在集合运算中n为集合中的元素,在树有关的运算中n为树的结点个数,在图有关的运算中n为图的顶点或边数,n越大算法执行时间越长,算法执行大致上等于语句执行时间的总和,语句执行时间为该条语句的重复次数和时间的乘积


相关文章
|
7月前
|
NoSQL 容器 消息中间件
数据结构 2.2.3
数据结构 2.2.3
|
2月前
|
消息中间件 缓存 调度
常见的8种数据结构
常见的数据结构包括数组、链表、队列、栈、树、堆、哈希表和图。
57 4
|
4月前
|
消息中间件 缓存 调度
常见的八种数据结构
常见的数据结构包括数组、链表、队列、栈、树、堆、哈希表和图,每种数据结构都有其特点
79 3
|
7月前
|
存储 算法 C#
C#编程与数据结构的结合
【4月更文挑战第21天】本文探讨了C#如何结合数据结构以构建高效软件,强调数据结构在C#中的重要性。C#作为面向对象的编程语言,提供内置数据结构如List、Array和Dictionary,同时也支持自定义数据结构。文章列举了C#实现数组、链表、栈、队列等基础数据结构的示例,并讨论了它们在排序、图算法和数据库访问等场景的应用。掌握C#数据结构有助于编写高性能、可维护的代码。
59 3
|
7月前
|
算法 C++ 开发者
【C/C++ 数据结构 】 连通图的基本了解
【C/C++ 数据结构 】 连通图的基本了解
101 0
数据结构 2.2 单循环链表
数据结构 2.2 单循环链表
56 0
|
存储 算法 搜索推荐
【BaseArray 数据结构】
【BaseArray 数据结构】
|
存储 索引
【数据结构】树塔
【数据结构】树塔
159 0
|
存储 算法 C语言
数据结构成神篇1-初学数据结构
今天我们开始数据结构的学习,当然,这个有些概念是十分抽象的,只看文章是不一定能懂的,或者说会耗费不少的时间。所以我会持续在B站上面更新讲解视频,都是自己的一些理解和想法。会拿出来和大家一起分享,都是免费的。原创不易,希望大家可以三连支持一下,也希望能给大家带来进步。
98 0
数据结构成神篇1-初学数据结构
|
存储 算法 Java