计算机程序设计 = 数据结构 + 算法
数据结构研究变量的管理方式,算法研究解决特定问题的方法。
数据结构分三个层次:逻辑结构(抽象层)、物理结构(结构层)、运算结构(实现层)。

1.1 数据结构的逻辑结构

逻辑结构指人对数据之间关系的理解和看法,逻辑结构和计算机无关。
逻辑结构:
1、集合结构:这种结构表示数据可以合并成一个整体。
  这是数据之间关系最弱的一种,就仅比那个一点关系都没有的强一点。
2、线性结构:这种结构中数据之间有一对一的关系(如排队)。
3、树型结构:这种结构中数据之间有一对多的关系,这个关系称为父子关系(典型的如细胞分裂)。
4、网状结构:这种结构中数据之间有多对多的交叉映射关系。

(我们主要研究线性结构和树型结构。)

1.2 数据结构的物理结构

物理结构描述计算机内部数据之间实际的关系。
物理结构:
1、顺序结构:结构中的数据元素存放在一段连续的内存空间中,典型代表就是数组。随机访问方便,插入删除复杂。
2、链式结构:这种结构中不同的数据被存储在计算机里不同的地方,他们的物理位置之间完全没有关系。链式结构由多个节点构成,每个节点中包括有效数据和至少一个指针变量。
对链式结构进行操作时,如果不会修改结构则使用一级指针变量就可以了,如果会修改结构则需要使用二级指针变量,其实,一级指针变量也可以修改链式结构。
链式结构适合进行插入删除操作,不适合进行随机访问。

/*链式结构练习*/
#include <stdio.h>typedef struct node{int num;struct node *p_next;//void *p_next;
}node;
node node1 = {1,NULL};int main(){node *p_head = NULL;//头指针node node2 = {2,NULL};static node node3 = {3,NULL};node node5 = {5,NULL};//新添一个节点,把它加入链表中p_head = &node1;node1.p_next = &node2;node2.p_next = &node3;//用二级指针把新增节点5挂上去/*node **pp_tmp = &p_head;while (*pp_tmp){pp_tmp = &((*pp_tmp)->p_next);}*pp_tmp = &node5;*///第二种把新增节点5加进去的方法node *p_tmp = NULL;if (p_head){p_tmp = p_head;while (p_tmp->p_next){p_tmp = p_tmp->p_next;}p_tmp->p_next = &node5;}else {p_head = &node5;}//显示所有节点数据p_tmp = p_head;while (p_tmp){printf("%-3d",p_tmp->num);p_tmp = p_tmp->p_next;}printf("\n");return 0;
}

逻辑结构可以采用多种物理结构实现,它们之间没有明确的一对一的关系。

1.3 数据结构的运算结构

数据结构的基本操作(运算结构):
1、创建/销毁
  分配资源、建立结构、释放资源
2、插入/删除
  增加、减少数据元素
3、获取/修改
  遍历、迭代、随机访问
(增删改查)
4、排序/查找
  算法应用

数据结构(1)—— 数据结构的三大结构相关推荐

  1. python函数结构图_Python数据结构与算法之图结构(Graph)实例分析

    本文实例讲述了Python数据结构与算法之图结构(Graph).分享给大家供大家参考,具体如下: 图结构(Graph)--算法学中最强大的框架之一.树结构只是图的一种特殊情况. 如果我们可将自己的工作 ...

  2. 数据结构32:树存储结构

    之前介绍的所有的数据结构都是线性存储结构.本章所介绍的树结构是一种非线性存储结构,存储的是具有"一对多"关系的数据元素的集合. (A)                       ...

  3. python define graph_Python数据结构与算法之图结构(Graph)实例分析

    本文实例讲述了Python数据结构与算法之图结构(Graph).分享给大家供大家参考,具体如下: 图结构(Graph)--算法学中最强大的框架之一.树结构只是图的一种特殊情况. 如果我们可将自己的工作 ...

  4. 数据结构与算法之RandomPool结构和岛问题

    数据结构与算法之RandomPool结构和岛问题 目录 RandomPool结构 岛问题 1. RandomPool结构 (一)题目概述 (二)思路分析 完成上述功能需要创建两个hashmap结构 i ...

  5. c语言打印树形图形,数据结构C语言版树形结构.ppt

    数据结构C语言版树形结构 St中元素 算法执行的操作 ch AC k=2 , AC 建立E结点,因k=1,将其作为C结点的左孩子结点 E AC C结点进栈,k=1 ( A 建立C结点,因k=2,将其作 ...

  6. 数据结构之树的存储结构

    数据结构之树的存储结构 思维导图 双亲表示法: 增 删 孩子表示法: 孩子兄弟表示法:(重要) 森林和二叉树的转化 思维导图 双亲表示法: 增 增加M.L节点 删 删除G节点(叶节点) 删除(非叶节点 ...

  7. mysql索引数据结构图解_MySQL索引底层结构与实现原理

    为什么要使用索引 MySQL官方定义为:索引(Index)是帮助 MySQL 高效获取数据的数据结构,类似于书的目录结构一样. 如果向mysql发出一条sql语句请求,查询的字段没有创建索引的话,可能 ...

  8. 数据结构与算法之链表结构寻找p、q最近的公共祖先

    链表结构,寻找p.q最近的公共祖先 数据结构与算法之链表结构寻找p.q最近的公共祖先 链表结构,寻找p.q最近的公共祖先 问题 想法 代码 问题 设一棵二叉树的结点结构为(LLINK, INFO, R ...

  9. 浙大数据结构题集02-线性结构2 一元多项式的乘法与加法运算python版

    浙大数据结构题集02-线性结构2 一元多项式的乘法与加法运算python版 设计函数分别求两个一元多项式的乘积与和. 本文用链表做的 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数 ...

最新文章

  1. Serverless 如何在阿里巴巴实现规模化落地?
  2. js调用浏览器的下载框
  3. linux 下的gettimeofday 函数在windows上的替换方案
  4. 川大锦城c语言期末考试答案,四川大学《计算机组成原理》2018期末考试B卷答案及评分标准.doc...
  5. 「offer来了」2种递进学习思维,24道计网题目,保姆级巩固你的计网知识体系
  6. jep使用_JEP 277“增强弃用”非常好。 但这是一个更好的选择
  7. 算法学习--二叉查找树
  8. [转载] sklearn学习之:(3)决策树回归算法
  9. 谷歌地图地名显示繁体字_谷歌地图怎么把字去掉
  10. python 拼图验证码
  11. qnx 镜像文件_QNX OS镜像
  12. Scala中名词的解释
  13. 网易游戏(互娱)2020校招在线笔试-游戏研发
  14. 自定义异常BizException
  15. 请你讲讲wait方法的底层原理
  16. 因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies
  17. SQLite数据库的下载及安装步骤
  18. 纯css制作烟花特效
  19. 服务器IUSR_机器名账号找不到怎么办?(转自百度问问)
  20. NMAP扫描基本操作

热门文章

  1. linux用什么命令查看ip,Linux中ip命令的使用实例
  2. C# Word文档添加水印
  3. Excel日期加斜杠,日期时间戳互转
  4. python爬虫数据寻找过程(解决爬虫异步导致AttributeError: 'NoneType' object has no attribute 'find_all'错误)
  5. 华为手机如何把计算机添加到桌面,华为手机一键锁屏添加桌面快捷方式的操作步骤...
  6. 咖说 | 新基建中区块链的位置:基础设施的基础技术
  7. sim的准确识别技术
  8. c型钢机器_C型钢机
  9. 惠普omen测试软件,性能测试:高品质体验主流游戏
  10. js禁止鼠标右键及F12禁止查看源代码