数据结构(C语言)Learning Way

简介: 数据结构基本术语

一、数据

一般来说,用计算机解决一个问题时,大致需要经过以下几个步骤:首先要从具体问题抽象出一个适当的数学模型,然后设计一个解决此数学模型的算法,最后变出程序,进行测试、调整直至得到最终解答。

1.数据

数据(Data)

数据,是能输入计算机且能被计算机处理的各种符号的集合,它是:

  • 各种信息的载体
  • 是对客观事物符号化的表示
  • 能够被计算机识别、存储和加工

可以分为数值型数据,如整数、实数等;非数值型数据,如文字、图像、图形、声音等。

数据元素(Data element)

数据元素,是组成数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。也简称为元素,或称记录、结点或顶点。
数据项:构成数据元素的不可分割的最小单位。

数据对象(Data Object)

数据对象,是性质相同的数据元素的集合,是数据的一个子集

2.数据结构(Data Structure)

数据元素不是孤立存在的,它们之间存在某种关系,数据元素相互之间的关系成为结构(Structure)。数据结构,是指相互之间存在一种或多种特定关系的数据元素的集合。
数据结构包括以下三个方面的内容:

  • 数据元素之间的逻辑关系,也称逻辑结构
  • 数据元素及其关系在计算机内存中的表示(映像),称为数据的物理结构或存储结构
  • 数据的运算和实现,即对数据元素可以施加的操作以及这些操作在相应的存储结构上的实现

逻辑结构

逻辑结构是,描述数据元素之间的逻辑关系,与数据的存储无关,独立于计算机,是从具体问题抽象出来的数学模型。
可分为两类:

  • 线性结构(一对一),如线性表、栈、队列、串
  • 非线性结构(一对多),如树、图

物理结构

物理结构,是数据元素及其关系在计算机存储器中的结构(存储方式),是数据在计算机中表示。
可大致分为四类:

  • 顺序存储结构:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示(数组)
  • 链式存储结构:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示(指针)
  • 索引存储结构:在存储节点信息的同时,还建立附加的索引表(通讯录)
  • 散列存储结构:根据结点的关键字直接计算出该结点的存储地址

逻辑结构和物理结构有如下关系:

  • 存储结构是逻辑结构的映像与元素本身的映像
  • 逻辑结构是数据结构的抽象,存储结构是数据元素的实现
  • 两者综合起来建立了数据元素之间的结构关系

3.数据类型(Data Type)

数据类型,是一组性质相同的值的集合和定义在这个值集上的一组操作的总称。
抽象数据类型(Abstract Data Type):指一个数据模型以及定义在此数学模型上的一组操作,不考虑在计算机内如何表示和实现。

和数据结构的形式定义相对应,抽象数据类型可用以下三元组表示:
(D,S,P)
其中,D是数据对象,S是D是上的关系集,P是对D的基本操作集

ADT 抽象数据类型名 {
        数据对象:<数据对象的定义>
        数据关系:<数据关系的定义>
        基本操作:<基本操作的定义>
}ADT 抽象数据类型名

4.总结逻辑图

在这里插入图片描述持续更新中。。。

目录
相关文章
|
15天前
|
C语言
【数据结构】栈和队列(c语言实现)(附源码)
本文介绍了栈和队列两种数据结构。栈是一种只能在一端进行插入和删除操作的线性表,遵循“先进后出”原则;队列则在一端插入、另一端删除,遵循“先进先出”原则。文章详细讲解了栈和队列的结构定义、方法声明及实现,并提供了完整的代码示例。栈和队列在实际应用中非常广泛,如二叉树的层序遍历和快速排序的非递归实现等。
90 9
|
14天前
|
存储 搜索推荐 算法
【数据结构】树型结构详解 + 堆的实现(c语言)(附源码)
本文介绍了树和二叉树的基本概念及结构,重点讲解了堆这一重要的数据结构。堆是一种特殊的完全二叉树,常用于实现优先队列和高效的排序算法(如堆排序)。文章详细描述了堆的性质、存储方式及其实现方法,包括插入、删除和取堆顶数据等操作的具体实现。通过这些内容,读者可以全面了解堆的原理和应用。
57 16
|
14天前
|
C语言
【数据结构】二叉树(c语言)(附源码)
本文介绍了如何使用链式结构实现二叉树的基本功能,包括前序、中序、后序和层序遍历,统计节点个数和树的高度,查找节点,判断是否为完全二叉树,以及销毁二叉树。通过手动创建一棵二叉树,详细讲解了每个功能的实现方法和代码示例,帮助读者深入理解递归和数据结构的应用。
63 8
|
16天前
|
存储 C语言
【数据结构】手把手教你单链表(c语言)(附源码)
本文介绍了单链表的基本概念、结构定义及其实现方法。单链表是一种内存地址不连续但逻辑顺序连续的数据结构,每个节点包含数据域和指针域。文章详细讲解了单链表的常见操作,如头插、尾插、头删、尾删、查找、指定位置插入和删除等,并提供了完整的C语言代码示例。通过学习单链表,可以更好地理解数据结构的底层逻辑,提高编程能力。
44 4
|
18天前
|
存储 C语言
【数据结构】顺序表(c语言实现)(附源码)
本文介绍了线性表和顺序表的基本概念及其实现。线性表是一种有限序列,常见的线性表有顺序表、链表、栈、队列等。顺序表是一种基于连续内存地址存储数据的数据结构,其底层逻辑是数组。文章详细讲解了静态顺序表和动态顺序表的区别,并重点介绍了动态顺序表的实现,包括初始化、销毁、打印、增删查改等操作。最后,文章总结了顺序表的时间复杂度和局限性,并预告了后续关于链表的内容。
49 3
|
16天前
|
C语言
【数据结构】双向带头循环链表(c语言)(附源码)
本文介绍了双向带头循环链表的概念和实现。双向带头循环链表具有三个关键点:双向、带头和循环。与单链表相比,它的头插、尾插、头删、尾删等操作的时间复杂度均为O(1),提高了运行效率。文章详细讲解了链表的结构定义、方法声明和实现,包括创建新节点、初始化、打印、判断是否为空、插入和删除节点等操作。最后提供了完整的代码示例。
37 0
|
5月前
|
存储 缓存 前端开发
【数据结构/C语言】深入理解 双向链表
【数据结构/C语言】深入理解 双向链表
|
2月前
|
存储 人工智能 C语言
数据结构基础详解(C语言): 栈的括号匹配(实战)与栈的表达式求值&&特殊矩阵的压缩存储
本文首先介绍了栈的应用之一——括号匹配,利用栈的特性实现左右括号的匹配检测。接着详细描述了南京理工大学的一道编程题,要求判断输入字符串中的括号是否正确匹配,并给出了完整的代码示例。此外,还探讨了栈在表达式求值中的应用,包括中缀、后缀和前缀表达式的转换与计算方法。最后,文章介绍了矩阵的压缩存储技术,涵盖对称矩阵、三角矩阵及稀疏矩阵的不同压缩存储策略,提高存储效率。
384 8
|
2月前
|
C语言
数据结构基础详解(C语言):图的基本概念_无向图_有向图_子图_生成树_生成森林_完全图
本文介绍了图的基本概念,包括图的定义、无向图与有向图、简单图与多重图等,并解释了顶点度、路径、连通性等相关术语。此外还讨论了子图、生成树、带权图及几种特殊形态的图,如完全图和树等。通过这些概念,读者可以更好地理解图论的基础知识。
|
2月前
|
存储 算法 C语言
数据结构基础详解(C语言): 二叉树的遍历_线索二叉树_树的存储结构_树与森林详解
本文从二叉树遍历入手,详细介绍了先序、中序和后序遍历方法,并探讨了如何构建二叉树及线索二叉树的概念。接着,文章讲解了树和森林的存储结构,特别是如何将树与森林转换为二叉树形式,以便利用二叉树的遍历方法。最后,讨论了树和森林的遍历算法,包括先根、后根和层次遍历。通过这些内容,读者可以全面了解二叉树及其相关概念。

热门文章

最新文章