数据结构---C++版

本文介绍了数据结构的基本概念,包括数据、数据元素、数据项之间的关系,以及数据结构的逻辑结构和存储结构。强调了数据结构在程序设计中的重要性,逻辑结构包括集合、线性结构、树结构和图结构,存储结构则分为顺序存储和链接存储。此外,还探讨了算法的五大特性,并概述了线性表的逻辑结构和两种存储结构:顺序表和链表,分析了它们的优缺点和适用场景。
摘要由CSDN通过智能技术生成

第 1 章 数据结构的基本概念
1.1 数据结构在程序设计中的作用
1)程序设计的实质是什么?
数据表示:将数据存储在计算机(内存)中
数据处理:处理数据,设计方案(算法)
1.2 计算机求解问题:
1)问题→抽象出问题的模型→求模型的解
问题——数值问题、非数值问题
2)数 值 问 题→数学方程
非数值问题→数据结构
3)本书讨论非数值问题的数据组织和处理,主要内容如下:
(1)数据的逻辑结构:线性表、树、图等数据结构,其核心
是如何组织待处理的数据以及数据之间的关系;
(2)数据的存储结构:如何将线性表、树、图等数据结构存
储到计算机的存储器中,其核心是如何有效地存储数据以及
数据之间的逻辑关系;
(3)算法:如何基于数据的某种存储结构实现插入、删除、
查找等基本操作,其核心是如何有效地处理数据;
(4)常用数据处理技术:查找技术、排序技术、索引技术等。
1.3 数据结构的基本概念
1)数据结构的基本概念
(1)数据:所有能输入到计算机中并能被计算机程序识别和处理的符号集合。
数值数据:整数、实数等
非数值数据:图形、图象、声音、文字等
(2)数据元素:数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
(3)数据项:构成数据元素的不可分割的最小单位。
2)数据、数据元素、数据项之间的关系
(1)包含关系:数据由数据元素组成,数据元素由数据项组成。
(2)数据元素是讨论数据结构时涉及的最小数据单位,其中的数据项一般不予考虑。
3)数据结构的基本概念
(1)数据结构:相互之间存在一定关系的数据元素的集合。
按照视点的不同,数据结构分为逻辑结构和存储结构。
逻辑结构:指数据元素之间逻辑关系的整体。
(2)数据的逻辑结构是从具体问题抽象出来的数据模型
数据的逻辑结构在形式上可定义为一个二元组:
Data_Structure = (D, R)
其中D是数据元素的有限集合,R是D上关系的集合。
(3)存储结构:又称为物理结构,是数据及其逻辑结构在计算机中的表示。
(4)存储结构实质上是内存分配,在具体实现时依赖于计算机语言。
5)数据结构从逻辑上分为四类:
(1)集合:数据元素之间就是“属于同一个集合” ;
(2)线性结构:数据元素之间存在着一对一的线性关系;
(3)树结构:数据元素之间存在着一对多的层次关系;
(4)图结构:数据元素之间存在着多对多的任意关系。
6)通常有两种存储结构:
(1)顺序存储结构:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。
(2)链接存储结构:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示 。
7)逻辑结构和存储结构之间的关系
(1)数据的逻辑结构属于用户视图,是面向问题的,反映了数据内部的构成方式;数据的存储结构属于具体实现的视图,是面向计算机的。
(2)一种数据的逻辑结构可以用多种存储结构来存储,而采用不同的存储结构,其数据处理的效率往往是不同的。
8)抽象数据类型
(1) 数据类型(Data Type):一组值的集合以及定义于这个值集上的一组操作的总称。
例如:C++中的整型变量
&#x

内含资源如下: 1.基本数据结构 1.1.Array ........... 动态数组 1.2.LinkedList ... 链表 1.3.BST .............. 二分搜索树 1.4.MapBST ..... 二分搜索树(用于实现映射) 1.5.AVLTree ...... AVL树 2.接口 2.1.Queue ........... 队列接口 2.2.Stack .............. 栈接口 2.3.Set .................. 集合接口 2.4.Map ............... 映射接口 2.5.Merger .......... 自定义函数接口 2.6.UnionFind ..... 并查集接口 3.高级数据结构 3.1.ArrayQueue .......................... 队列_基于动态数组实现 3.2.LinkedListQueue .................. 队列__基于链表实现 3.3.LoopQueue ........................... 循环队列_基于动态数组实现 3.4.PriorityQueue ....................... 优先队列_基于最大二叉堆实现 3.5.ArrayPriorityQueue ............. 优先队列_基于动态数组实现 3.6.LinkedListPriorityQueue ..... 优先队列_基于链表实现 3.7.ArrayStack ............................. 栈_基于动态数组实现 3.8.LinkedListStack ..................... 栈_基于链表实现 3.9.BSTSet ..................................... 集合_基于二分搜索树实现 3.10.LinkedListSet ....................... 集合_基于链表实现 3.11.BSTMap ................................ 映射_基于二分搜索树实现 3.12.AVLTreeMap ....................... 映射_ 基于AVL树实现 3.13.LinkedListMap .................... 映射_基于链表实现 3.14.MaxHeap ............................. 最大二叉堆 3.15.SegmentTree ...................... 线段树 3.16.Trie ......................................... 字典树 3.17.QuickFind ............................ 并查集_基于数组实现 3.18.QuickUnion ......................... 并查集_基于树思想实现
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值