数据结构(一)-数据结构基本概念(Java、C语言)

本文是一位电气专业的学生分享的自学数据结构的心路历程,选择了程杰的《大话数据结构(C语言版)》作为入门书籍,并计划用Java重写。文章介绍了数据结构的基本概念,包括数据、数据元素、数据项、数据对象和数据结构的逻辑与物理结构,并通过实例加以解释。作者期待与读者一同学习数据结构和算法。
摘要由CSDN通过智能技术生成

一、引言

数据结构这门课相信大家都不陌生,只要想从事计算机相关与互联网相关的工作,这门课都是必不可少的课。但是我并不是计算机专业学生,作为一个电气专业的学生,接触到的编程基本都是底层编程,无论是汇编语言(微机原理)、C语言(偏底层的应用,如单片机)、数据库等。因此,我们的课程中并没有数据结构这门课,但是我比较喜欢编程,因此,我将自学数据结构,希望通过写博客的方式巩固自己的所学。本人菜鸟一枚。希望有人能指出我的不足与错误。开始我的学习!!!
在这里插入图片描述

二、书籍选择

我这里选择了程杰的大话数据结构(C语言版),听说这本书讲得很好,适合初学者,那咱就用起来,但是我虽然学了C语言,但是我比较喜欢Java,并且将Java作为主要掌握的语言,因此,我通过学习C语言版数据结构后,会再用Java进行重新改写一遍,由于语言的特点,C语言与Java的数据结构有细微的差别,但本质上并没有太大差别。
在这里插入图片描述

三、数据结构基本概念

数据结构的起源:早期人们把计算机作为一种计算工具,计算机解决问题首先从具体问题中抽象出一个适当的数据模型,设计出一个解此模型的算法,然后再编写程序,得到一个实际的软件。可现实中,我们更多的不是解决数值计算的问题,而是需要一些更科学有效的手段(比如表、树和图等数据结构)的帮助,才能更好地处理问题。所以:
数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。

基本概念和术语:

  1. 数据:是描述客观事物的符号,是计算机中可操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据具有两个前提:可以输入到计算机中。能被计算机程序处理。
  2. 数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。
  3. 数据项:一个数据元素可以由若干个数据项组成。数据项是数据不可分割的最小单位。
  4. 数据对象:是性质相同的数据元素的集合,是数据的子集。
  5. 数据结构:不同数据元素之间不是独立的,而是存在特定的关系,我们将这些关系称为结构。

看了一大堆,是不是有点迷惑这几个概念,举个例子:人类(数据)、某一个人(数据元素)、某一个人的姓名、年龄等(数据项)、中学生或者老年人等特定群体(数据对象)、每个人直接错综复杂的关系(数据结构)。

逻辑结构与物理结构:

  1. 逻辑结构
    集合结构:集合结构中的数据元素除了同属于一个集合外,他们之间没有其他关系
    线性结构:线性结构中的数据元素之间是一对一的关系。
    树形结构:树形结构中的数据元素之间存在一对多的层次关系
    图形结构:图形结构的数据元素是多对多的关系。在这里插入图片描述
  2. 物理结构
    顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。
    链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。

好了,数据结构基本概念到这里结束了,想一起学数据的伙伴们可以关注我的本专栏哦。后续会逐步学习各种数据结构与算法。

第1章 基本概念 1.1 概观:系统生命周期 1.2 指针和动态存储分配 1.3 算法形式规范 1.4 数据抽象 1.5 性能分析 1.6 性能度量 1.7 参考文献和选读材料 第2章 数组和结构 2.1 数组 2.2 数组的动态存储分配 2.3 结构体和联合体 2.4 多项式 2.5 稀松矩阵 2.6 多维数组的表示 2.7 字符串 2.8 参考文献和选读材料 2.9 补充习题 第3章 栈与队列 3.1 栈 .3.2 动态栈 3.3 队列 3.4 动态循环队列 3.5 迷宫问题 3.6 表达式求值 3.7 多重栈与多重队列 3.8 补充习题 第4章 链表 4.1 单向链表 4.2 用C语言表示单向链表 4.3 链式栈与链式队列 4.4 多项式 4.5 其它链表操作 4.6 等价类 4.7 稀疏矩阵 4.8 双向链表 第5章 树 5.1 引论 5.2 二叉树 5.3 遍历二叉树 5.4 其它二叉树操作 5.5 线索二叉树 5.6 堆 5.7 二叉查找树 5.8 选拔树 5.9 森林 5.10 不相交集合的表示 5.11 二叉树的计数 5.12 参考文献和选读材料 第6章 图 6.1 图的抽象数据类型 6.2 图的基本操作 6.3 最小代价生成树 6.4 最短路径和迁移闭包 6.5 活动网络 6.6 参考文献和选读材料 6.7 补充习题 第7章 排序 7.1 动机 7.2 插入排序 7.3 快速排序 7.4 排序最快有多快 7.5 归并排序 7.6 堆排序 7.7 多关键字排序 7.8 链表排序和索引表排序 7.9 内部排序小结 7.10 外部排序 7.11 参考文献和选读材料 第8章 Hash法 8.1 引言 8.2 静态Hash法 8.3 动态Hash法 8.4 Bloom滤波器 8.5 参考文献和选读材料 第9章 优先队列 9.1 单端优先队列和双端优先队列 9.2 左倾树 9.3 二项式堆 9.4 Fibonacci堆 9.5 配偶堆 9.6 对称最小-最大堆 9.7 区间堆 9.8 参考文献和选读材料 第10章 高效二叉查找树 10.1 最优二叉查找树 10.2 AVL树 10.3 红-黑树 10.4 Splay树 10.5 参考文献和选读材料 第11章 多路查找树 11.1 m-路查找树 11.2 B-树 11.3 B+树 11.4 参考文献和选读材料 第12章 数字查找结构 12.1 数字查找树 12. 2 二路Trie树和Patricia树 12.3 多路Trie树 12.4 后缀树 12.5 Trie树和互联网的包转发 12.6 参考文献和选读材料
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值