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

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. Spring Boot中使用时序数据库InfluxDB
  2. NPM 安装 TypeScript 和 npm 的 Invalid package.json 错误以及运行第一个typescript程序
  3. android service alertdialog,Android service里面启动alertdialog
  4. 暗备用的运行状态_瞧:我利用“无偏二极管”发明设计出了【宇宙“暗物质”、“暗能量”探测器】...
  5. php 查询cpu使用率,php获取CPU使用情况的代码
  6. MVC操作SQL数据库增删改查
  7. 简单聊聊智能硬件的固件测试
  8. QQ聊天记录恢复、迁移教程(改变默认存储位置、个人文件夹保存位置)
  9. Docker入门教程
  10. 我工作用的电脑十年没重装过一次系统,我是如何做到的
  11. Google I/O 2014之Android面面观
  12. Mac启动台显示白色问号图标
  13. 分奖金(python)
  14. iOS 如何判断静音开关是否打开
  15. 2016全球与中国市场开关插座深度研究报告
  16. 【老鸟进阶】deepfacelab训练参数详解
  17. Leetcode-545. Boundary of Binary Tree
  18. RT-Thread学习笔记——邮箱
  19. Oracle索引技术pdf
  20. 发布支持VR的Web3D内容

热门文章

  1. 网站服务器端口扫描,服务器端口扫描工具
  2. 做微商洗发水怎么做引流?洗发水类微商怎么引流精准客户?
  3. 趣味测试类微信小程序
  4. 设计模式【2.2】-- 工厂模式怎么演变成抽象工厂模式?
  5. JAVA操作Word合并、替换占位符、Word插入富文本、生成水印
  6. MSDC 4.3 接口规范(21)
  7. 全功能笔记软件 Notion v2.0.4 绿色便携版
  8. H型钢的尺寸的设计与使用(市场上可以轻松采购)
  9. 报错Exception opening port “18080“ (port may be in use), cause: “java.net.BindException: Address alrea
  10. 扔掉塑料手环吧!有多高科技不重要,美才是重点