一 数据结构入门

基本概念

  • 有哪些数据结构?

线性表,栈,队列,串,数组,广义表,树,二叉树,图

重点是线性表,二叉树

每种数据结构需要掌握,添加、更新、删除、查询、排序等操作的实现

学习数据结构的四种境界:

境界1:听懂理论,听懂算法思路

境界2:完成主要数据结构基本算法的实现(理论+实践,数据结构入门)

境界3:完成更多数据结构更多算法的实现

境界4:融会贯通,举一反三,在后续开发中综合应用数据结构知识。

数据(data): 是描述客观事物的数值、字符、以及能输入及其且能被处理的各种符号集合。例如:数值、字符、声音、图像等等。

数据项(data item):具有原子性,是不可分割的最小数据单位。如学生信息相关的姓名、性别。

数据元素(data Element):数据的基本单位,通常由若干个数据项组成,在计算机程序中通常作为一个整体来处理。如描述一名学生完整信息的数据记录。

数据对象(data Object):性质相同的数据元素的集合,数据的子集。如一个学校所有学生的集合。

  • 数据结构(data structure):相互之间存在一种或多种特定关系的数据元素的集合。

一种是数据结构的逻辑层面,即数据的逻辑结构

一种是存在于计算机的物理层面,即数据的存储结构

  • 数据结构=逻辑结构+存储结构+在存储结构上的运算/操作

  • 数据的逻辑结构:数据元素之间的逻辑关系(和实现无关)

线性结构:有且只有一个开始节点和终端结点,并且所有节点最多只有一个直接前驱和直接后继。

线性表是一个典型的线性结构。

  • 分类2:集合结构、线性结构、树状结构、网络结构

逻辑结构有四种基本类型:集合结构、线性结构、树状结构、网络结构。

表和树是最常用的两种高效数据结构。

集合结构:类似数学里的集合。

  • 确定性:集合中的元素必须是确定的
  • 唯一性:集合中的元素互不相同,{1,a},那么a不等于1
  • 无序性:集合中的元素不分先后,{1,2}和{2,1}算同一个集合

线性结构:数据元素之间存在一对一的线性关系的数据关系

树状结构:除了第一个元素以外每个元素有且仅有一个直接前驱元素,但是可以有多个后继元素。一对多的关系。

网状结构:每个数据可以有多个前驱、多个后继。多对多的关系。

数据的存储结构:顺序存储、链式存储、索引存储、散列存储。数据元素本身之间的存储和以及数据元素之间的关系表示,数据的逻辑在计算机中的表示。

顺序存储结构:通常借助数组来实现。采用连续的存储空间。把逻辑上相邻的节点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。

优点:节省存储空间。分配的存储空间用来存储结点的数据,结点之间的逻辑关系不占用存储空间。可以实现对结点的随机存取,一个结点对应一个序号,通过序号得到存储地址,查询方便。

缺点:插入和删除操作需要移动元素,效率低。

链式存储结构:数据元素对应的是不连续的存储空间,每个存储结点对应一个需要存储的数据元素。

每个结点有数据域和指针域组成,元素之间的逻辑关系通过存储结点之间的链接关系反映出来。

特点:1 比顺序存储结构密度小。

2 逻辑上相邻的物理结点不必相邻。

3 插入、删除灵活(不必移动结点,只需要改变其中的指针)。

4 查询慢

索引存储结构:除建立存储结点信息外,还建立附加索引表来标识结点的地址。比如图书的目录。

散列存储结构:根据结点的关键字直接计算出该结点的存储地址。

一种神奇的结构。添加和查询极快。

原文地址:https://www.cnblogs.com/ltfxy/p/9798825.html

时间: 2024-07-29 10:03:36

一 数据结构入门的相关文章

[转]算法与数据结构——入门总结与自学资料推荐

[转]算法与数据结构——入门总结与自学资料推荐 本文转自(http://www.cnblogs.com/jiahuix/p/4868881.html) 一.大纲 博客:董西城.Vamei 思维导图下载地址:http://pan.baidu.com/s/1gdCqW8r 二.数据结构资料推荐 数组:查找快O(1),插入删除慢O(n) 链表:查找慢O(n),插入删除快O(1) 块状链表:查找插入删除O(sqrt(n)):数组+链表: 队列:先进先出 堆栈:先进后出 双端队列:队列与堆栈结合,有hea

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

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

记数据结构--入门和预备知识

数据结构(一)--入门和预备知识 1. 概述 数据结构定义: 我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中, 以及在此基础上为实现某个功能(如元素的CURD.排序等)而执行的相应操作,这个相应的操作也叫算法. 数据结构 = 元素的存储 + 元素的关系的存储算法 = 对数据存储的操作 算法: 算法就是:解决问题的方法和步骤 衡量算法有如下标准: 时间复杂度(程序要执行的次数,并非执行时间) 空间复杂度(算法执行过程中大概要占用的最大内存) 难易程度(可读

【干货】史上最好的排序和数据结构入门

前言 工作已经有一段时间了,有的时候会跟同事们打趣:"如果你让我现在去手写一个快速排序,我怕是真的写不出来". 如果不接触一段时间的算法,真的很容易就忘了.不信?你现在想想你自己能不能手写一个堆排序. 经历过校招的人都知道,算法和数据结构都是不可避免的. 在笔试的时候,最主要的就是靠算法题.像拼多多.头条这种大公司,上来就来几道算法题,如果你没AC出来,面试机会都没有. 在面试(现场面或者视频面)的时候也会问算法题,难度肯定是没有笔试的时候那么难的.我们可以想象一个场景,一面面试面到一

算法与数据结构——入门总结与自学资料推荐

一.大纲 博客:董西城.Vamei 思维导图下载地址:http://pan.baidu.com/s/1gdCqW8r 二.数据结构资料推荐 数组:查找快O(1),插入删除慢O(n) 链表:查找慢O(n),插入删除快O(1) 块状链表:查找插入删除O(sqrt(n)):数组+链表: 队列:先进先出 堆栈:先进后出 双端队列:队列与堆栈结合,有head与tail的数组,队首队尾都可以增删. 哈希表: 集合A到集合B的映射: 哈希函数:MD5, SHA: 应用:文件对比,密码存储: 碰撞解决:open

数据结构入门之链表(C语言实现)

这篇文章主要是根据<数据结构与算法分析--C语言描述>一书的链表章节内容所写,该书作者给出了链表ADT的一些方法,但是并没有给出所有方法的实现.在学习的过程中将练习的代码记录在文章中,并添加了一些在测试中需要的函数,因此可能看起来会有点乱... 首先,链表作为一种简单的线性数据结构,主要特征就是"节点",每个节点包含两个信息,一个是数据域,另外一个是指针域.数据是我们在程序中需要用到的数据,数据类型可以变化,根据需要设定即可,但是指针域就是一个指针,主要作用是指向下一个节点

数据结构入门——递归

数据结构是学习编程路上的重要一步,也为以后学习算法打下基础,数据结构又称算法与数据结构,与算法密不可分,是计算机软件专业的核心课程,其重要性不言而喻. 递归分为递推与回归两个过程,递归的优点是容易理解,方便编程,可以解决很多问题,缺点是需要不断的调用递归,时间效率慢,空间占用大. 递归示例: # include <stdio.h> int f(int n) { //printf("1"); n = f(n); return n; //return f(n); //递归,必须

数据结构入门——栈与队列

栈与队列是两种重要的数据结构,有着广泛的应用,他们可以通过对链表功能加以限制改造而来.栈是一种先进后出(FILO)的数据结构,只能在一头进行加入删除,而队列是一种先进先出(FIFO)的数据结构,一头只能加入,另一头只能删除. 栈的实现: # include <stdio.h> # include <malloc.h> # include <stdlib.h> typedef struct Node { int data; struct Node * pNext; }NO

数据结构入门——链表的实现

该程序实现了链表的增.删.遍历.排序等大部分功能,仅供参考.理解链表的原理,对后面栈.队列.二叉树.图等数据结构的学习有很大帮助. 链表的实现: # include <stdio.h> # include <malloc.h> # include <stdlib.h> typedef struct Node { int data; struct Node * pNext; }NODE, *PNODE; PNODE create_list(void); void trav