涂鸦数据结构2 基本知识

数据结构起源?

什么是数据结构? 书上给的定义是:

数据结构是研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作的相关问题的学科。(太抽象了……哥打完这一段话楞了半天,没反应过来……)

这个定义其实挺复杂抽象的,下面展示我的定义:

对,你没看错。数据结构其实就是一本兵法,这本兵法大约讲了三件事

1 每个兵怎么做?——(操作对象)

2 阵法怎么排——(他们之间的关系)

3 仗怎么打——(操作)

基本术语

我们这里讲三个术语:数据,数据元素,数据项

大约就是各种东西都可以是数据,数据里面独立的存在叫做元素,元素有很多基本单位组成,叫做项

来张图:故事这样子:刘备率领关张赵马黄五路大军进攻洛阳。大军就是数据,每路军马都是元素,里面的士兵甲乙丙丁就是项。

物理结构和逻辑结构

逻辑结构:数据元素之间的相互关系

啥叫相互关系?其实就是上文的排兵布阵:

1 集合结构:(没有派兵布阵)元素除了属于同一个集合之外没有关系

2 线性结构:(一字长蛇阵)

3 树形结构:(雁行阵)

4 网状结构:(八卦阵)

物理结构

就是计算机存储数据的方式,一般有两种

1 链式结构,随机存放,优点是存取方便,麻烦是没能随机访问

2 顺序结构,按顺序排放,访问方便,存取复杂

这两种方法的区别可以用唐宋的军队建设来做比较:

唐朝军队本地人在本地当兵,将士熟悉,战斗力强劲,可是也因为本地人,牵一发而动全身,容易结党营私甚至造反

宋朝军队是本地人去外地当兵,将士之间相互不熟悉,不容易结党营私,更不用说造反了,可是反过来说,因为不熟悉,战斗力弱,抵抗不了外族入侵……

时间: 2024-10-28 20:41:46

涂鸦数据结构2 基本知识的相关文章

数据结构第一讲,数据结构入门了解知识.

目录 数据结构入门简介 一丶数据结构的四种分类 1.集合结构 2.线性结构 3.树结构 4.图结构 二丶物理结构简介 1.存储器 2.数据元素的存储形式 三丶总结 数据结构入门简介 一丶数据结构的四种分类 我们常听的一句话就是, 数据结构 + 算法 = 程序 意思就是在我们的程序设计中,数据结构是必不可少的,那么什么是数据结构,数据结构简而言之就是针对数据关系而生产的产物.可能不是很理解.因为我们程序编写过程中,程序中产生的数据怎么存储这都是数据关系. 常见的数据结构种类. 集合 线性结构 树结

数据结构与算法知识大纲

数据结构与算法 1.线性结构 (1)线性表 ①线性表的定义 ②线性表的存储结构 ③线性表的应用 (2)栈和队列 ①栈 ②队列 (3)串 ①串的定义及基本运算 ②串的存储结构 2.数组和矩阵 (1)数组 (2)矩阵 3.树和图 (1)树 ①树的定义 ②二叉树的定义和基本运算 ③二叉树的性质 ④二叉树的存储结构 ⑤二叉树的遍历 ⑥最优二叉树 ⑦二叉查找树 (2)图 ①图的定义及术语 ②图的存储结构 4.常用算法 (1)算法概述 ①算法的基本概念 ②算法与数据结构 ③算法的描述 ④算法效率 (2)排序

各种数据结构与算法知识入门经典(不断更新)

自荐者和推荐者请留言 基本算法 贪心算法:贪心算法 作者:独酌逸醉 贪心算法精讲 作者:3522021224 递归和分治:递归与分治策略 作者:zhoudaxia 图论 图的遍历(DFS和BFS):  图的遍历 作者:jefferent 最小生成树(Prim算法和Kruskal算法): 贪心算法--最小生成树 作者:独酌逸醉 Dijkstra算法: 最短路径之Dijkstra算法详细讲解 作者:愚人有节 拓扑排序:拓扑排序作者: midgard 如何去理解 拓扑排序算法 作者:张善友 关键路径:

libiop网络库数据结构和基础知识

最近朋友推荐,学习了libiop这个网络库,作者封装的很全面,代码很简洁 适合初学者学习基于事件驱动的网络io 先看看iop_def.h, 这里面定义了常用的数据结构 tag_iop_base_t 主要用于管理所有事件,每个事件是一个iop_t, maxio表示最大的文件描述符, free_list_head 表示可用的空闲列表头部id,一般用iops + free_list_head 取出iop_t 的元素 同理free_list_tail,最后一个可用iop, iop_op_t 是封装了几个

大话数据结构–1.基础知识

  2.算法:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每个指令表现为一个或多个操作. 特性:输入.输出.有穷性.确定性.可行性.

与Javascript相关的数据结构和算法

著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:豪情链接:http://www.zhihu.com/question/36882354/answer/69416260来源:知乎 建议先打好基础,了解js语言的特性或玩法,然后再来玩算法,个人感觉才能四两拨千斤,算法这种东西,是高级抽象的东西,简单说:是熟悉计算机语言解决日常需求的前提下,熟练的选择一种高效的做事方式,先了解如何将日常的需求或人类的自然语言转换为计算机语言,然后在进一步的确定算法在整个代码开发中所扮演的角色

如何学好算法和数据结构之我见——51CTO名家访谈实录

最近受邀参加"51CTO名家访谈"就算法与数据结构话题论道做答,希望这些问题能够解答各位读者朋友的心中疑惑. 活动网址如下: http://book.51cto.com/act/exp/zuofei 下面是活动中Q&A环节我的一些作答,希望可以作为正在学习算法的朋友们的一些经验参考. 算法到底是什么? 非形式地说,算法是为实现某个任务而构造的简单指令集.以日常用语来说,算法又称为 过程或者方法.算法在数学中也起着非常重要的作用.古代数学文献中就包含有执行各种各样计算任务的算法描

[考研系列之数据结构]线性表之栈

?基本概念 栈的定义 限定仅在表尾进行插入或删除的线性表 组成 栈顶 栈底 基本操作 入栈(PUSH) 往栈中插入一个元素 弹栈(POP) 从栈顶删除一个元素 栈的表示 顺序栈 链栈 对于顺序栈,有两个指针base和top base指向栈底 top指向栈顶 对于栈的一些基本情况: 栈不存在时候 base=NULL 栈为空时  top=base 栈的长度 top-base 链栈略过. 栈的应用 1 数制转换 数制转换我们使用一种称之为"辗转相除法"的算法.此算法的基本原理基于: N=(N

复习数据结构:排序算法(一)——插入排序

从这一篇开始,计划复习一下数据结构的基本知识.一来是为了开年之后的找工作,二来是为了想提升自己的编程能力.由于这些数据结构知识点,之前都学习过,这里我们就提炼出每个知识点的核心,以及代码实现. 这篇先说排序算法中的插入排序. 插入排序是一种稳定排序算法,属于内排序.适合少量数据量的排序. 当输入数组已经排好序时,插入排序需要O(n),快排需要O(n^2). 当输入数组倒序排列时,插入排序时复为:O(n^2). 平均时间复杂度:O(n^2). 代码实现如下: #include<iostream>